# cao_verifier

WHEN a scene is composed and BEFORE cao_pdf / cao_generer_dxf / cao_rendu / cao_visite_plan / cao_visite_studio — the cheap check that stops a wrong plan or broken 4K visit from being delivered. FREE geometric audit of a CAO scene (no API key, 0 units). Detects the mistakes that make planches look wrong: openings.z used as absolute altitude instead of relative sill (allège), chien_assis dormers floating outside the roof, upper storey walls with no windows, guardrails far from the building, missing stairs between floors, openings overflowing their wall. ALSO checks that a staircase actually leads somewhere (escalier_traverse_mur — the flight runs into a partition of its own level; escalier_arrivee_hors_batiment — it lands outside the walls). STAIRCASE PLACEMENT is checked in full, because a stair dropped in an absurd spot is the most visible flaw of an AI-composed model: escalier_depart_hors_batiment (it starts in the void), escalier_volee_hors_batiment (the flight leaves the building on the way up), escalier_bloque_ouverture (it seals a doorway), escalier_z_hors_niveau (it floats between two slabs), escalier_hauteur_incoherente (it stops short of the floor above), escalier_chevauche (two flights in the same footprint), and escalier_sans_appui (free-standing mid-room — a WARNING, not blocking: an open stairwell is a legitimate choice). Each one comes with a correctifs[] entry carrying a REAL replacement position (x/y/rotation): the closest valid spot to what you asked for, backed against a wall, arriving in clear space and blocking no door. Apply with REST /api/v1/cao/integrite {appliquer:true, revalider:true} — you never have to guess where to put it. ALSO checks that a dormer sits on the slope (lucarne_profondeur_courte / _longue / lucarne_trop_haute — depth must be ≈ height / roof pitch, otherwise its roof floats above the slope or overshoots the ridge). Returns {ok, erreurs_schema, alertes[{code,severite,message,corriger}], conseils, resume}. Fix severite=critique before delivery. ALSO runs a full STRUCTURAL INTEGRITY check (is the building really closed and roofed?): enveloppe_percee — a wall end joins nothing (T-junctions and door jambs are recognised, so no false alarms) — murs_composantes_isolees — closed wall clusters / pillars / low walls scattered OUTSIDE the main envelope (the 'murs en vrac' Visite 4K defect; correctifs propose null = delete that wall) — bande_ouverte_entre_niveaux, mur_etage_sans_appui, toit_ouvert, toiture_sous_les_murs, ouvertures_chevauchantes, and the VOLUME CLASHES the IFC clash detector sees: mur_en_double, murs_superposes, mur_dans_une_baie (correctif slides the opening clear), volume_traverse_un_mur, volume_traverse_le_plafond, murs_qui_se_croisent (warning); pipe × wall crossings come back in reservations (sleeves to plan, not clashes). ALSO dalle_flottante / pilier_detache on orphan boxes. It returns integrite.correctifs[]: the exact field to write and the value to write there, e.g. {cible:'murs[3].x2', actuel:10400, propose:11000, raison:…} or {cible:'murs[12]', propose:null} to remove clutter. REST /api/v1/cao/integrite runs that check alone and can APPLY the fixes for you (appliquer:true, revalider:true) — also free, no key. Response includes regles_archi (buildingSMART-inspired principles). ALSO checks DOCUMENT COMPLETENESS (documents): the PDF planche delivers one full plan PER STOREY — 4 storeys means 4 complete plans — so it flags element_hors_plan (a stair/guardrail whose z attaches to no storey: it would vanish from EVERY plan), niveau_non_desservi (no stair ARRIVES at that storey and no lift covers it), arrivee_sans_protection (stair head without guardrail, NF P01-012), hauteur_niveau_insuffisante (<2200 mm). documents.couverture is the announced table of contents of the planche. Standalone: REST /api/v1/cao/documents (free, supports appliquer/revalider too). REST equivalent: /api/v1/cao/verifier.

Agent View of the PolicyLayer registry record for `cao_verifier`. HTML page: https://policylayer.com/tools/fr-synergieloc-immobilier/cao-verifier

## Facts

- Tool: `cao_verifier`
- Server: Immobilier (`https://synergieloc.fr/mcp`) — https://policylayer.com/tools/fr-synergieloc-immobilier.md
- Homepage: https://github.com/https://synergieloc.fr/mcp
- Risk category: Destructive (Critical risk)
- Registry record: grade F, identity unverified
- Server auth posture: open
- Server rate-limited: no
- Parameters: 12
- Recommended policy verdict: Hidden

## Parameters

| Parameter | Type | Required | Description |
| --- | --- | --- | --- |
| `murs` | array | no | Walls: plan segments extruded vertically. Every coordinate in this whole scene is in MILLIMETRES, in a single plan frame whose origin you choose — X to the righ |
| `plan` | array | no | 2D reference lines — drawn flat, never extruded and never counted in the quantities. Use them for axes, plot limits or setting-out marks. |
| `boites` | array | no | Boxes (furniture, volumes): a rectangular block placed by its CENTRE, not by a corner. Millimetres, same frame as murs[]. |
| `georef` | object | no | Optional Lambert-93 (EPSG:2154) false origin for IfcMapConversion. Local millimetres are scaled by 0.001 to CRS metres. Do not invent coordinates: omit est/nord |
| `cercles` | array | no | Circles on the 2D plan, alongside plan[] lines: each has a centre and a radius, in the same unit as the plan. Use for round shapes a polyline would render badly |
| `reseaux` | array | no | Plumbing pipe runs (EF/EC/EU/EV/EP/chauffage) — used only by cao_pdf (technical plan + linear-meter quantities per type). |
| `toitures` | array | no | Roofs — used only by cao_pdf. WITHOUT this field: a flat roof is auto-generated over the footprint of ALL walls (legacy default). WITH it: compose freely — each |
| `plomberie` | array | no | Sanitary fixtures (sink, WC, shower…) — used only by cao_pdf. Same positioning as electricite. |
| `decoration` | array | no | Paint/finish per wall — used only by cao_pdf. Colors the elevations (exterior face) and the axonometric view (face auto-detected by orientation relative to the |
| `ouvertures` | array | no | Doors/windows embedded in a wall — used only by cao_pdf (elevations + axonometric view), no effect on dxf/metres. |
| `electricite` | array | no | Electrical symbols (outlets, switches, lights…) — used only by cao_pdf (dedicated technical plan + quantities), no effect on dxf/metres/render. Position: attach |
| `compositions` | object | no | Named wall/slab layer sets declared by the project. A key that matches an inferred kind (mur_exterieur, refend, cloison, plancher, toiture) or murs[].compositio |

Parameters from the server's own tool schema.

## Example call (MCP tools/call, JSON-RPC 2.0)

```json
{
  "jsonrpc": "2.0",
  "id": 1,
  "method": "tools/call",
  "params": {
    "name": "cao_verifier",
    "arguments": {}
  }
}
```

## Why cao_verifier is rated Critical

An AI agent that decides to call cao_verifier doesn't hesitate, doesn't double-check, and doesn't stop at one. Whatever it removes from Immobilier is gone. There is no undo for destructive operations.

Risk signals: High parameter count (94 properties) · Bulk/mass operation — affects multiple targets

## Use case

AI agents call cao_verifier to permanently remove resources in Immobilier, typically in cleanup and lifecycle workflows. It does its job in a single call, and there is no undo.

## Recommended policy (PolicyLayer)

Verdict: **Hidden**. Enforced by the PolicyLayer MCP gateway (https://policylayer.com/mcp-gateway) before a call reaches Immobilier:

```json
{
  "version": "1",
  "default": "deny",
  "hide": [
    "cao_verifier"
  ]
}
```

## Other tools on Immobilier (69)

- `cao_energie` — Destructive — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-energie.md
- `cao_nomenclatures` — Destructive — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-nomenclatures.md
- `cao_bibliotheque_familles` — Execute — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-bibliotheque-familles.md
- `cao_carnet` — Execute — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-carnet.md
- `cao_generer_ifc` — Execute — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-generer-ifc.md
- `cao_livrer` — Execute — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-livrer.md
- `cao_visite_camera` — Execute — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-visite-camera.md
- `bonnes_pratiques` — Read — https://policylayer.com/tools/fr-synergieloc-immobilier/bonnes-pratiques.md
- `cao_4d` — Read — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-4d.md
- `cao_devis` — Read — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-devis.md
- `cao_familles` — Read — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-familles.md
- `cao_ids_verifier` — Read — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-ids-verifier.md
- `cao_pdf` — Read — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-pdf.md
- `cao_rendu` — Read — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-rendu.md
- `cao_urbanisme` — Read — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-urbanisme.md
- `pack_partenaire` — Read — https://policylayer.com/tools/fr-synergieloc-immobilier/pack-partenaire.md
- `annonce_location` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/annonce-location.md
- `avenant_revision_irl` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/avenant-revision-irl.md
- `avis_echeance` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/avis-echeance.md
- `bon_intervention` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/bon-intervention.md
- `candidature_locataire` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/candidature-locataire.md
- `cao_bcf_ifc` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-bcf-ifc.md
- `cao_comparer_versions` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-comparer-versions.md
- `cao_conflits_ifc` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-conflits-ifc.md
- `cao_copilote` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-copilote.md
- `cao_demo` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-demo.md
- `cao_documents` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-documents.md
- `cao_famille_essayer` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-famille-essayer.md
- `cao_familles_recharger` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-familles-recharger.md
- `cao_ferraillage` — Write — https://policylayer.com/tools/fr-synergieloc-immobilier/cao-ferraillage.md
- …and 39 more: https://policylayer.com/tools/fr-synergieloc-immobilier.md

## For agents

This record is a snapshot. Live verdicts and the full registry:

- Check every server in your MCP config at once: `npx -y policylayer stack`
- Vet a server before you add it: install the mcp-precheck skill — `npx skills add https://policylayer.com` (skill text: https://policylayer.com/skill.md)
- Query the registry over MCP: endpoint `https://api.policylayer.com/mcp` — tools `check_mcp_server`, `check_mcp_stack`, `check_tool`, `search_registry`, `get_change_events`

---

Source: the PolicyLayer MCP registry — one continuously verified record per MCP server. Full record: https://policylayer.com/registry?q=fr-synergieloc-immobilier · API: https://policylayer.com/registry/api · Policy library: https://policylayer.com/policies/fr-synergieloc-immobilier
