Skip to main content
Glama

civilquants

Render Bill of Quantities deliverable

render_skill_report
Read-only

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.

Input Schema

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

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema 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"
      +  }
      +]
  2. Changed1 schema 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"
      +  }
      +]
  3. Changed1 schema 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
      -}
  4. Changed3 schema 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"
      +  }
      +]
  5. Changed2 schema 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"
      +}
  6. First observed

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.

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources