changedOutput schema / properties / result / anyOf
Previous value: -[
- {
- "additionalProperties": false,
- "properties": {
- "_meta": {
- "additionalProperties": false,
- "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
- "properties": {
- "deliverables": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
- "properties": {
- "docx_url": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "dxf_url": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "expires_at": {
- "minLength": 1,
- "type": "string"
- },
- "pdf_url": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "xlsx_url": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "expires_at"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "document_id": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "hint": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "issued_at": {
- "minLength": 1,
- "type": "string"
- },
- "output_mode": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
- "properties": {
- "mode": {
- "enum": [
- "summary",
- "boq",
- "boq_with_backup"
- ],
- "type": "string"
- },
- "omitted_fields": {
- "items": {
- "type": "string"
- },
- "minItems": 1,
- "type": "array"
- },
- "retrieve_with": {
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "mode",
- "omitted_fields",
- "retrieve_with"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "rate_limit_remaining": {
- "anyOf": [
- {
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "request_id": {
- "minLength": 1,
- "type": "string"
- },
- "schema_version": {
- "const": "1.0.0",
- "default": "1.0.0",
- "type": "string"
- },
- "scope_boundary": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
- "properties": {
- "not_in_scope": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "produced": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "recommended_companions": {
- "anyOf": [
- {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "produced",
- "not_in_scope"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "tier": {
- "enum": [
- "free",
- "paid"
- ],
- "type": "string"
- },
- "tier_upgrade": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Canonical schema § 0.7 — present on free-tier responses only.",
- "properties": {
- "available_tiers": {
- "items": {
- "additionalProperties": false,
- "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
- "properties": {
- "billing": {
- "enum": [
- "one_off",
- "monthly",
- "annual"
- ],
- "type": "string"
- },
- "currency": {
- "enum": [
- "GBP",
- "SGD",
- "EUR",
- "USD",
- "CAD",
- "AUD",
- "NZD",
- "MYR"
- ],
- "type": "string"
- },
- "display_name": {
- "type": "string"
- },
- "price_local": {
- "type": "number"
- },
- "tier_slug": {
- "enum": [
- "7_day_pass",
- "solo",
- "studio",
- "practice"
- ],
- "type": "string"
- },
- "unlock_summary": {
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "tier_slug",
- "display_name",
- "price_local",
- "currency",
- "billing",
- "unlock_summary"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "current_tier": {
- "const": "free",
- "default": "free",
- "type": "string"
- },
- "pass_credit": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
- "properties": {
- "amount_local": {
- "type": "number"
- },
- "applies_to": {
- "const": "solo_first_month",
- "default": "solo_first_month",
- "type": "string"
- },
- "currency": {
- "type": "string"
- },
- "redeemable_until": {
- "type": "string"
- }
- },
- "required": [
- "amount_local",
- "currency",
- "redeemable_until"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "pricing_url": {
- "default": "https://civilquants.com/pricing",
- "type": "string"
- }
- },
- "required": [
- "available_tiers"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "tos_url": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "upgrade_hint": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "warranty_disclaimer": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "request_id",
- "issued_at",
- "tier"
- ],
- "type": "object"
- },
- "data": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "The typed payload wrapped in MCPResponse[ResolveResult].",
- "properties": {
- "candidates": {
- "items": {
- "additionalProperties": false,
- "description": "A candidate assembly the description routed to.",
- "properties": {
- "category_l1": {
- "type": "string"
- },
- "category_l2": {
- "type": "string"
- },
- "compute_tool": {
- "minLength": 1,
- "type": "string"
- },
- "display_name": {
- "minLength": 1,
- "type": "string"
- },
- "fields": {
- "items": {
- "additionalProperties": false,
- "description": "One Parameters field, with the metadata a caller fills a value from.",
- "properties": {
- "default": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "integer"
- },
- {
- "type": "string"
- },
- {
- "type": "boolean"
- },
- {
- "type": "null"
- }
- ]
- },
- "group": {
- "minLength": 1,
- "type": "string"
- },
- "help_text": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "is_run_length": {
- "default": false,
- "type": "boolean"
- },
- "label": {
- "minLength": 1,
- "type": "string"
- },
- "load_bearing": {
- "default": false,
- "type": "boolean"
- },
- "max": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "min": {
- "anyOf": [
- {
- "type": "number"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "name": {
- "minLength": 1,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "name",
- "label",
- "default",
- "group"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "free_alternative": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "multi_section_tool": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "slug": {
- "minLength": 1,
- "type": "string"
- },
- "standard_note": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "suggested_params": {
- "items": {
- "additionalProperties": false,
- "description": "A value the description stated with a clear anchor — a caller-confirmed\nsuggestion, NOT an authoritative value and never auto-fed to compute.",
- "properties": {
- "name": {
- "minLength": 1,
- "type": "string"
- },
- "source": {
- "minLength": 1,
- "type": "string"
- },
- "unit": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "value": {
- "type": "number"
- }
- },
- "required": [
- "name",
- "value",
- "source"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "supports_multi_section": {
- "default": false,
- "type": "boolean"
- },
- "tier": {
- "enum": [
- "free",
- "paid"
- ],
- "type": "string"
- }
- },
- "required": [
- "slug",
- "display_name",
- "tier",
- "category_l1",
- "category_l2",
- "compute_tool"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "confidence": {
- "enum": [
- "high",
- "medium",
- "low"
- ],
- "type": "string"
- },
- "preferred_standard": {
- "anyOf": [
- {
- "enum": [
- "CESMM4",
- "NRM2",
- "SMM7",
- "MMHW"
- ],
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "query": {
- "type": "string"
- },
- "questions": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "resolution_log": {
- "anyOf": [
- {
- "items": {
- "additionalProperties": false,
- "description": "One row of the optional resolution log (return_resolution_log).",
- "properties": {
- "matched_terms": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "score": {
- "type": "number"
- },
- "slug": {
- "type": "string"
- }
- },
- "required": [
- "slug",
- "score"
- ],
- "type": "object"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "query",
- "confidence"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "error": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
- "properties": {
- "code": {
- "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
- "enum": [
- "RATE_LIMIT_EXCEEDED",
- "TIER_INSUFFICIENT",
- "INVALID_INPUT",
- "SCHEMA_VERSION_MISMATCH",
- "SCHEMA_INVARIANT_VIOLATION",
- "UPSTREAM_TIMEOUT",
- "BACKEND_FAILURE",
- "IP_BLOCKED",
- "RESOURCE_NOT_FOUND",
- "RENDER_FAILURE",
- "OCR_LOW_CONFIDENCE",
- "MANUAL_REVIEW_REQUIRED",
- "ACCEPTANCE_REQUIRED",
- "INVALID_TOKEN"
- ],
- "type": "string"
- },
- "details": {
- "anyOf": [
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "message": {
- "minLength": 1,
- "type": "string"
- },
- "recoverable": {
- "type": "boolean"
- },
- "retry_after_seconds": {
- "anyOf": [
- {
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "code",
- "message",
- "recoverable"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "_meta"
- ],
- "type": "object"
- },
- {
- "additionalProperties": false,
- "properties": {
- "_meta": {
- "additionalProperties": false,
- "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
- "properties": {
- "deliverables": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
- "properties": {
- "docx_url": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "dxf_url": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "expires_at": {
- "minLength": 1,
- "type": "string"
- },
- "pdf_url": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "xlsx_url": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "expires_at"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "document_id": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "hint": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "issued_at": {
- "minLength": 1,
- "type": "string"
- },
- "output_mode": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``boq`` / ``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
- "properties": {
- "mode": {
- "enum": [
- "summary",
- "boq",
- "boq_with_backup"
- ],
- "type": "string"
- },
- "omitted_fields": {
- "items": {
- "type": "string"
- },
- "minItems": 1,
- "type": "array"
- },
- "retrieve_with": {
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "mode",
- "omitted_fields",
- "retrieve_with"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "rate_limit_remaining": {
- "anyOf": [
- {
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "request_id": {
- "minLength": 1,
- "type": "string"
- },
- "schema_version": {
- "const": "1.0.0",
- "default": "1.0.0",
- "type": "string"
- },
- "scope_boundary": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
- "properties": {
- "not_in_scope": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "produced": {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- "recommended_companions": {
- "anyOf": [
- {
- "items": {
- "type": "string"
- },
- "type": "array"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "produced",
- "not_in_scope"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "tier": {
- "enum": [
- "free",
- "paid"
- ],
- "type": "string"
- },
- "tier_upgrade": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Canonical schema § 0.7 — present on free-tier responses only.",
- "properties": {
- "available_tiers": {
- "items": {
- "additionalProperties": false,
- "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
- "properties": {
- "billing": {
- "enum": [
- "one_off",
- "monthly",
- "annual"
- ],
- "type": "string"
- },
- "currency": {
- "enum": [
- "GBP",
- "SGD",
- "EUR",
- "USD",
- "CAD",
- "AUD",
- "NZD",
- "MYR"
- ],
- "type": "string"
- },
- "display_name": {
- "type": "string"
- },
- "price_local": {
- "type": "number"
- },
- "tier_slug": {
- "enum": [
- "7_day_pass",
- "solo",
- "studio",
- "practice"
- ],
- "type": "string"
- },
- "unlock_summary": {
- "minLength": 1,
- "type": "string"
- }
- },
- "required": [
- "tier_slug",
- "display_name",
- "price_local",
- "currency",
- "billing",
- "unlock_summary"
- ],
- "type": "object"
- },
- "type": "array"
- },
- "current_tier": {
- "const": "free",
- "default": "free",
- "type": "string"
- },
- "pass_credit": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
- "properties": {
- "amount_local": {
- "type": "number"
- },
- "applies_to": {
- "const": "solo_first_month",
- "default": "solo_first_month",
- "type": "string"
- },
- "currency": {
- "type": "string"
- },
- "redeemable_until": {
- "type": "string"
- }
- },
- "required": [
- "amount_local",
- "currency",
- "redeemable_until"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "pricing_url": {
- "default": "https://civilquants.com/pricing",
- "type": "string"
- }
- },
- "required": [
- "available_tiers"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "tos_url": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "upgrade_hint": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "warranty_disclaimer": {
- "anyOf": [
- {
- "type": "string"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "request_id",
- "issued_at",
- "tier"
- ],
- "type": "object"
- },
- "data": {
- "default": null,
- "title": "Data"
- },
- "error": {
- "anyOf": [
- {
- "additionalProperties": false,
- "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
- "properties": {
- "code": {
- "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
- "enum": [
- "RATE_LIMIT_EXCEEDED",
- "TIER_INSUFFICIENT",
- "INVALID_INPUT",
- "SCHEMA_VERSION_MISMATCH",
- "SCHEMA_INVARIANT_VIOLATION",
- "UPSTREAM_TIMEOUT",
- "BACKEND_FAILURE",
- "IP_BLOCKED",
- "RESOURCE_NOT_FOUND",
- "RENDER_FAILURE",
- "OCR_LOW_CONFIDENCE",
- "MANUAL_REVIEW_REQUIRED",
- "ACCEPTANCE_REQUIRED",
- "INVALID_TOKEN"
- ],
- "type": "string"
- },
- "details": {
- "anyOf": [
- {
- "additionalProperties": true,
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- },
- "message": {
- "minLength": 1,
- "type": "string"
- },
- "recoverable": {
- "type": "boolean"
- },
- "retry_after_seconds": {
- "anyOf": [
- {
- "minimum": 0,
- "type": "integer"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "code",
- "message",
- "recoverable"
- ],
- "type": "object"
- },
- {
- "type": "null"
- }
- ],
- "default": null
- }
- },
- "required": [
- "_meta"
- ],
- "type": "object"
- }
-]New value: +[
+ {
+ "additionalProperties": false,
+ "properties": {
+ "_meta": {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
+ "properties": {
+ "deliverables": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
+ "properties": {
+ "docx_url": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "dxf_url": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "expires_at": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "pdf_url": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "xlsx_url": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "expires_at"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "document_id": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "hint": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "issued_at": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "output_mode": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
+ "properties": {
+ "mode": {
+ "enum": [
+ "summary",
+ "material_schedule",
+ "boq",
+ "boq_with_backup"
+ ],
+ "type": "string"
+ },
+ "omitted_fields": {
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "type": "array"
+ },
+ "retrieve_with": {
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "mode",
+ "omitted_fields",
+ "retrieve_with"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "rate_limit_remaining": {
+ "anyOf": [
+ {
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "request_id": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "schema_version": {
+ "const": "1.0.0",
+ "default": "1.0.0",
+ "type": "string"
+ },
+ "scope_boundary": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
+ "properties": {
+ "not_in_scope": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "produced": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "recommended_companions": {
+ "anyOf": [
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "produced",
+ "not_in_scope"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "tier": {
+ "enum": [
+ "free",
+ "paid"
+ ],
+ "type": "string"
+ },
+ "tier_upgrade": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.7 — present on free-tier responses only.",
+ "properties": {
+ "available_tiers": {
+ "items": {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
+ "properties": {
+ "billing": {
+ "enum": [
+ "one_off",
+ "monthly",
+ "annual"
+ ],
+ "type": "string"
+ },
+ "currency": {
+ "enum": [
+ "GBP",
+ "SGD",
+ "EUR",
+ "USD",
+ "CAD",
+ "AUD",
+ "NZD",
+ "MYR"
+ ],
+ "type": "string"
+ },
+ "display_name": {
+ "type": "string"
+ },
+ "price_local": {
+ "type": "number"
+ },
+ "tier_slug": {
+ "enum": [
+ "7_day_pass",
+ "solo",
+ "studio",
+ "practice"
+ ],
+ "type": "string"
+ },
+ "unlock_summary": {
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "tier_slug",
+ "display_name",
+ "price_local",
+ "currency",
+ "billing",
+ "unlock_summary"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "current_tier": {
+ "const": "free",
+ "default": "free",
+ "type": "string"
+ },
+ "pass_credit": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
+ "properties": {
+ "amount_local": {
+ "type": "number"
+ },
+ "applies_to": {
+ "const": "solo_first_month",
+ "default": "solo_first_month",
+ "type": "string"
+ },
+ "currency": {
+ "type": "string"
+ },
+ "redeemable_until": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "amount_local",
+ "currency",
+ "redeemable_until"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "pricing_url": {
+ "default": "https://civilquants.com/pricing",
+ "type": "string"
+ }
+ },
+ "required": [
+ "available_tiers"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "tos_url": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "upgrade_hint": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "warranty_disclaimer": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "request_id",
+ "issued_at",
+ "tier"
+ ],
+ "type": "object"
+ },
+ "data": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "The typed payload wrapped in MCPResponse[ResolveResult].",
+ "properties": {
+ "candidates": {
+ "items": {
+ "additionalProperties": false,
+ "description": "A candidate assembly the description routed to.",
+ "properties": {
+ "category_l1": {
+ "type": "string"
+ },
+ "category_l2": {
+ "type": "string"
+ },
+ "compute_tool": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "display_name": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "fields": {
+ "items": {
+ "additionalProperties": false,
+ "description": "One Parameters field, with the metadata a caller fills a value from.",
+ "properties": {
+ "default": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "integer"
+ },
+ {
+ "type": "string"
+ },
+ {
+ "type": "boolean"
+ },
+ {
+ "type": "null"
+ }
+ ]
+ },
+ "group": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "help_text": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "is_run_length": {
+ "default": false,
+ "type": "boolean"
+ },
+ "label": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "load_bearing": {
+ "default": false,
+ "type": "boolean"
+ },
+ "max": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "min": {
+ "anyOf": [
+ {
+ "type": "number"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "name": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "name",
+ "label",
+ "default",
+ "group"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "free_alternative": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "multi_section_tool": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "slug": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "standard_note": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "suggested_params": {
+ "items": {
+ "additionalProperties": false,
+ "description": "A value the description stated with a clear anchor — a caller-confirmed\nsuggestion, NOT an authoritative value and never auto-fed to compute.",
+ "properties": {
+ "name": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "source": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "unit": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "value": {
+ "type": "number"
+ }
+ },
+ "required": [
+ "name",
+ "value",
+ "source"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "supports_multi_section": {
+ "default": false,
+ "type": "boolean"
+ },
+ "tier": {
+ "enum": [
+ "free",
+ "paid"
+ ],
+ "type": "string"
+ }
+ },
+ "required": [
+ "slug",
+ "display_name",
+ "tier",
+ "category_l1",
+ "category_l2",
+ "compute_tool"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "confidence": {
+ "enum": [
+ "high",
+ "medium",
+ "low"
+ ],
+ "type": "string"
+ },
+ "preferred_standard": {
+ "anyOf": [
+ {
+ "enum": [
+ "CESMM4",
+ "NRM2",
+ "SMM7",
+ "MMHW"
+ ],
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "query": {
+ "type": "string"
+ },
+ "questions": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "resolution_log": {
+ "anyOf": [
+ {
+ "items": {
+ "additionalProperties": false,
+ "description": "One row of the optional resolution log (return_resolution_log).",
+ "properties": {
+ "matched_terms": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "score": {
+ "type": "number"
+ },
+ "slug": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "slug",
+ "score"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "query",
+ "confidence"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "error": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
+ "properties": {
+ "code": {
+ "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
+ "enum": [
+ "RATE_LIMIT_EXCEEDED",
+ "TIER_INSUFFICIENT",
+ "INVALID_INPUT",
+ "SCHEMA_VERSION_MISMATCH",
+ "SCHEMA_INVARIANT_VIOLATION",
+ "UPSTREAM_TIMEOUT",
+ "BACKEND_FAILURE",
+ "IP_BLOCKED",
+ "RESOURCE_NOT_FOUND",
+ "RENDER_FAILURE",
+ "OCR_LOW_CONFIDENCE",
+ "MANUAL_REVIEW_REQUIRED",
+ "ACCEPTANCE_REQUIRED",
+ "INVALID_TOKEN"
+ ],
+ "type": "string"
+ },
+ "details": {
+ "anyOf": [
+ {
+ "additionalProperties": true,
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "message": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "recoverable": {
+ "type": "boolean"
+ },
+ "retry_after_seconds": {
+ "anyOf": [
+ {
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "code",
+ "message",
+ "recoverable"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "_meta"
+ ],
+ "type": "object"
+ },
+ {
+ "additionalProperties": false,
+ "properties": {
+ "_meta": {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.2 — present on every MCPResponse.\n\nRequired fields: `schema_version`, `request_id`, `issued_at`, `tier`.\nThe free-tier-only fields (`upgrade_hint`, `tos_url`, `warranty_disclaimer`,\n`tier_upgrade`, `rate_limit_remaining`) are populated by the middleware\nwhen `tier == \"free\"`; absent on paid-tier responses.",
+ "properties": {
+ "deliverables": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.3 — R2 signed URLs (24h TTL).",
+ "properties": {
+ "docx_url": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "dxf_url": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "expires_at": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "pdf_url": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "xlsx_url": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "expires_at"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "document_id": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "hint": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "issued_at": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "output_mode": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Surfaces what a trimmed ``output_mode`` withheld from ``data``.\n\nA trimmed mode (``summary`` / ``material_schedule`` / ``boq`` /\n``boq_with_backup``) withholds\nalready-computed fields to keep the chat payload small. The withheld value\nreads to a client agent as \"capability missing\" (the box-culvert \"geometry\nbuilder isn't firing\" scare) rather than \"pared for size\": ``drawing`` and\n``audit_trail`` appear as ``null``, ``boq_rows`` as an empty list ``[]``\n(its type forbids ``null``) — both indistinguishable from a genuine absent\nresult. This names the withheld fields and the exact mode that brings each\nback, so the value is unambiguous. Absent on the default ``full_json`` mode\n— nothing is withheld, nothing to point at.",
+ "properties": {
+ "mode": {
+ "enum": [
+ "summary",
+ "material_schedule",
+ "boq",
+ "boq_with_backup"
+ ],
+ "type": "string"
+ },
+ "omitted_fields": {
+ "items": {
+ "type": "string"
+ },
+ "minItems": 1,
+ "type": "array"
+ },
+ "retrieve_with": {
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "mode",
+ "omitted_fields",
+ "retrieve_with"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "rate_limit_remaining": {
+ "anyOf": [
+ {
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "request_id": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "schema_version": {
+ "const": "1.0.0",
+ "default": "1.0.0",
+ "type": "string"
+ },
+ "scope_boundary": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.6 — surfaces what this assembly produces vs not.",
+ "properties": {
+ "not_in_scope": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "produced": {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ "recommended_companions": {
+ "anyOf": [
+ {
+ "items": {
+ "type": "string"
+ },
+ "type": "array"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "produced",
+ "not_in_scope"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "tier": {
+ "enum": [
+ "free",
+ "paid"
+ ],
+ "type": "string"
+ },
+ "tier_upgrade": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.7 — present on free-tier responses only.",
+ "properties": {
+ "available_tiers": {
+ "items": {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.7 — single tier in the upgrade carousel.",
+ "properties": {
+ "billing": {
+ "enum": [
+ "one_off",
+ "monthly",
+ "annual"
+ ],
+ "type": "string"
+ },
+ "currency": {
+ "enum": [
+ "GBP",
+ "SGD",
+ "EUR",
+ "USD",
+ "CAD",
+ "AUD",
+ "NZD",
+ "MYR"
+ ],
+ "type": "string"
+ },
+ "display_name": {
+ "type": "string"
+ },
+ "price_local": {
+ "type": "number"
+ },
+ "tier_slug": {
+ "enum": [
+ "7_day_pass",
+ "solo",
+ "studio",
+ "practice"
+ ],
+ "type": "string"
+ },
+ "unlock_summary": {
+ "minLength": 1,
+ "type": "string"
+ }
+ },
+ "required": [
+ "tier_slug",
+ "display_name",
+ "price_local",
+ "currency",
+ "billing",
+ "unlock_summary"
+ ],
+ "type": "object"
+ },
+ "type": "array"
+ },
+ "current_tier": {
+ "const": "free",
+ "default": "free",
+ "type": "string"
+ },
+ "pass_credit": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.7 — pass-credit upgrade hook.",
+ "properties": {
+ "amount_local": {
+ "type": "number"
+ },
+ "applies_to": {
+ "const": "solo_first_month",
+ "default": "solo_first_month",
+ "type": "string"
+ },
+ "currency": {
+ "type": "string"
+ },
+ "redeemable_until": {
+ "type": "string"
+ }
+ },
+ "required": [
+ "amount_local",
+ "currency",
+ "redeemable_until"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "pricing_url": {
+ "default": "https://civilquants.com/pricing",
+ "type": "string"
+ }
+ },
+ "required": [
+ "available_tiers"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "tos_url": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "upgrade_hint": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "warranty_disclaimer": {
+ "anyOf": [
+ {
+ "type": "string"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "request_id",
+ "issued_at",
+ "tier"
+ ],
+ "type": "object"
+ },
+ "data": {
+ "default": null,
+ "title": "Data"
+ },
+ "error": {
+ "anyOf": [
+ {
+ "additionalProperties": false,
+ "description": "Canonical schema § 0.4 — error payload returned in `MCPResponse.error`.",
+ "properties": {
+ "code": {
+ "description": "Canonical schema § 0.5 catalogue.\n\nEach member maps to a documented `recoverable` flag (see\n`IS_RECOVERABLE`) — clients use the flag to decide retry vs surface.",
+ "enum": [
+ "RATE_LIMIT_EXCEEDED",
+ "TIER_INSUFFICIENT",
+ "INVALID_INPUT",
+ "SCHEMA_VERSION_MISMATCH",
+ "SCHEMA_INVARIANT_VIOLATION",
+ "UPSTREAM_TIMEOUT",
+ "BACKEND_FAILURE",
+ "IP_BLOCKED",
+ "RESOURCE_NOT_FOUND",
+ "RENDER_FAILURE",
+ "OCR_LOW_CONFIDENCE",
+ "MANUAL_REVIEW_REQUIRED",
+ "ACCEPTANCE_REQUIRED",
+ "INVALID_TOKEN"
+ ],
+ "type": "string"
+ },
+ "details": {
+ "anyOf": [
+ {
+ "additionalProperties": true,
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ },
+ "message": {
+ "minLength": 1,
+ "type": "string"
+ },
+ "recoverable": {
+ "type": "boolean"
+ },
+ "retry_after_seconds": {
+ "anyOf": [
+ {
+ "minimum": 0,
+ "type": "integer"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "code",
+ "message",
+ "recoverable"
+ ],
+ "type": "object"
+ },
+ {
+ "type": "null"
+ }
+ ],
+ "default": null
+ }
+ },
+ "required": [
+ "_meta"
+ ],
+ "type": "object"
+ }
+]