Skip to main content
Glama

Detect clashes in an IFC model

cao_conflits_ifc
Read-only

WHEN coordinating a BIM model: detect real clashes — solids that interpenetrate by more than 10 mm and 0.1 L, computed on volumes (horizontal slices of each mesh), so two tables nested at the same level are caught and a bed standing against a wall is not. Pass a scene (same as cao_generer_ifc) or ifc: the text of an architect's IFC, whose GlobalIds are kept. Wall-slab bearings, wall corner/T joints, objects standing on a rug or deck and doors in their wall are intended geometry, counted in ignores. Returns {conflits, ignores, elements, boite_modele}.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
ifcNoIFC file content as STEP text (IFC2X3 or IFC4), e.g. an architect's model. When given, scene fields are ignored.
mursNoWalls: 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 right, Y upward, Z up from the floor. Keep one consistent origin across murs/boites/plan: the generators never recentre anything for you.
planNo2D reference lines — drawn flat, never extruded and never counted in the quantities. Use them for axes, plot limits or setting-out marks.
boitesNoBoxes (furniture, volumes): a rectangular block placed by its CENTRE, not by a corner. Millimetres, same frame as murs[].
georefNoOptional 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 if unknown (origin stays 0). orientation is the angle in degrees of project X from map East, counterclockwise.
cerclesNoCircles 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 — fillets, posts, manholes.
reseauxNoPlumbing pipe runs (EF/EC/EU/EV/EP/chauffage) — used only by cao_pdf (technical plan + linear-meter quantities per type).
toituresNoRoofs — 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 entry can target a subset of walls (via `murs`), letting you build an L-shaped building's roof, or add a dormer on top of a main roof.
plomberieNoSanitary fixtures (sink, WC, shower…) — used only by cao_pdf. Same positioning as electricite.
decorationNoPaint/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 building's centroid).
ouverturesNoDoors/windows embedded in a wall — used only by cao_pdf (elevations + axonometric view), no effect on dxf/metres.
electriciteNoElectrical symbols (outlets, switches, lights…) — used only by cao_pdf (dedicated technical plan + quantities), no effect on dxf/metres/render. Position: attached to a wall (`mur`+`position`, like ouvertures) or free (`x`,`y`).
compositionsNoNamed wall/slab layer sets declared by the project. A key that matches an inferred kind (mur_exterieur, refend, cloison, plancher, toiture) or murs[].composition drops the Hypothese flag. Each value is {libelle, couches: [{cle, epaisseur?}]}. cle: enduit, bloc_beton, isolant, ba13, ossature, enduit_platre, beton_arme, tuile, charpente, etancheite. Omit epaisseur on the load-bearing layer.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed1 schema field changed
    • addedInput schema / properties / murs / items / properties / existant
      Added value: +{
      +  "description": "Optional: true for a wall of the EXISTING building when the scene is an extension. cao_permis then counts as created only what the works add.",
      +  "type": "boolean"
      +}
  2. Changed1 schema field changed
    • changedInput schema / properties / plomberie / items / properties / type / enum
      Previous value: -[
      -  "baignoire",
      -  "chauffe_eau",
      -  "compteur_eau",
      -  "douche",
      -  "evier",
      -  "lavabo",
      -  "radiateur",
      -  "wc"
      -]New value: +[
      +  "baignoire",
      +  "chauffe_eau",
      +  "compteur_eau",
      +  "douche",
      +  "evier",
      +  "lavabo",
      +  "module_hydraulique",
      +  "pac_exterieure",
      +  "radiateur",
      +  "wc"
      +]
  3. Added

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare a safe read-only operation, but the description adds substantial behavior beyond them: the clash threshold, the volume/slice computation method, which interpenetrations are deliberately excluded as intended geometry (bearings, corner/T joints, rug/deck objects, doors in walls), and the exact return keys. This is well past the lower bar set by the annotations.

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

Conciseness4/5

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

Front-loaded with the WHEN clause and the core detection rule, followed by input modes and exclusions. Dense and occasionally long-winded, but nearly every clause carries technical payload rather than restating structured fields.

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

Completeness5/5

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

Although there is no output schema, the description supplies the return shape ({conflits, ignores, elements, boite_modele}), the input alternatives, and the false-positive policy. For a clash-detection tool with 13 documented scene parameters, nothing an agent needs to call it correctly is missing.

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

Parameters4/5

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

Schema coverage is 100%, so the baseline is 3, but the description adds genuine semantics: the scene-vs-`ifc` choice, that scene fields are effectively superseded by `ifc`, and that GlobalIds are preserved from the IFC. It thereby disambiguates the primary input decision the schema alone leaves open.

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

Purpose5/5

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

States a specific verb+resource (detect clashes / real interpenetrating solids) and pins the operational definition (>10 mm and 0.1 L on volumes), so it is unmistakable against siblings like cao_verifier or cao_valider_ifc. The concrete examples (nested tables caught, bed against a wall not) make the intent self-evident.

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?

"WHEN coordinating a BIM model" gives a clear triggering context, and it authorizes two input modes (a scene same as cao_generer_ifc, or raw `ifc` text). It does not name an alternative tool or state when not to use this one, so the routing is implied rather than explicit.

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