Skip to main content
Glama

TIP

ðŸĪ– Authored 100% by AI Agent (Antigravity powered by Gemini 3.8 Flash):
This iconic architectural masterpiece was not coded by hand line-by-line! Instead, an autonomous AI Coding Agent (Google Antigravity powered by Gemini 3.8 Flash) researched historical blueprints, structural grids, and architectural dimensions of the Farnsworth House, synthesized the declarative .debim specification (project.debim), computed material quantities (QTO), and compiled standard IFC4 building models in seconds — proving that humans don't need to manually code YAML when assisted by AI agents!


ðŸŽŊ Why debim?

"debim originated from a simple desire: to make AI calculate accurate Bills of Quantities (BOQ). Asking an LLM to guess building dimensions directly in text leads to fatal hallucinations. An exact mathematical model (BIM) is essential, yet traditional IFC files are bloated and overwhelm AI context windows. The solution is Declarative YAML — but the resulting Building-as-Code engine proved far more transformative than our initial goal."

Traditional BIM tools (like Revit or Archicad) were conceived over 25 years ago for humans clicking with computer mice. They lock architectural data inside heavy, proprietary gigabyte files (.rvt), charge thousands of dollars in annual licenses, and remain completely opaque to modern automation and AI agents.

debim is built on 6 Core Architectural Tenets:

  1. Building-as-Code & Git-Native: Buildings are software. Expressed as compact YAML/.debim (Kilobytes, not Gigabytes) for transparent Version Control, line-by-line Git diffs, and branching.

  2. Deterministic Code Compliance: Building codes and engineering regulations are treated as automated Unit Tests (pytest), catching setback violations and structural errors in 0.01 seconds before ground is broken.

  3. Zero-License & Zero-Friction Visualization: Instant geometric verification through lightweight 3D HTML viewers that load in any browser or mobile device in 2 seconds without expensive licenses.

  4. Universal Bridge & Dual Representation: Seamlessly connects 2D drafts, 3D DCC tools (Blender/SketchUp), and open IFC standards using a dual approach: 90% geometric primitives for engineering/BOQ + 10% baked GLB assets for architectural refinement.

  5. Human & AI Super-Collaboration: Designed with explicit uncertainty flags (review_status: needs_review), enabling humans and autonomous AI agents to co-author and verify building models without friction.

  6. "The Mermaid.js of BIM" (Zero-Dependency & Air-Gapped Sandboxes): Operates seamlessly inside secure enterprise environments, air-gapped VMs, and LLM Code Interpreters (ChatGPT, Claude Artifacts, Gemini Code Execution) using 100% Python Standard Library with zero pip dependencies.

NOTE

🔒 The "Mermaid.js" Philosophy for Isolated VMs & Sandboxes:
Just as Markdown freed documentation from MS Word and Mermaid.js freed diagramming from Visio, debim frees building design from 20GB closed CAD suites. An AI agent in an offline, air-gapped VM without internet access can analyze requirements and generate an exact .debim file in 0.01 seconds. Downstream systems and community compilers outside the sandbox then turn that file into IFC4, AutoCAD DXF, or full bills of quantities!


Related MCP server: ifc-mcp

ðŸĪ– Autonomous AI-Agent Setup

If you use an AI coding assistant (like Antigravity, Cursor, Claude Code, Jules, or ChatGPT/Copilot), you don't even need to install it manually!

Just copy and send this prompt to your AI:

"Please read https://github.com/PRIDA-TAKON/debim and AGENTS.md, install debim in my environment, and run debim --help to verify."

Your agent will inspect the repository, install the dependencies, and verify everything automatically.


🔌 Model Context Protocol (MCP) Server

Start MCP server over stdio on AI Agents Listing

debim natively implements the official Model Context Protocol (MCP) via FastMCP (Python SDK). It provides LLMs and AI Agents (such as Claude Desktop, Cursor, Cline, Windsurf, Devin, and Antigravity) with deterministic tools to model, inspect, calculate, compile, and visualize buildings directly via function calling.

Connecting to Claude Desktop / Cursor / Cline

Add debim to your MCP configuration (claude_desktop_config.json or .cursor/mcp.json):

{
  "mcpServers": {
    "debim": {
      "command": "debim",
      "args": ["mcp"]
    }
  }
}

Or run via Docker:

{
  "mcpServers": {
    "debim": {
      "command": "docker",
      "args": ["run", "-i", "--rm", "ghcr.io/prida-takon/debim:latest"]
    }
  }
}

Exposed MCP Tools

MCP Tool

Description

Input Parameters

debim_validate

Validates YAML manifest syntax, structural grid alignments, storey heights, and material references.

manifest_yaml: str

debim_qto

Computes deterministic Quantitative Take-Off (concrete vol, formwork area, rebar kg, structural steel, timber, masonry).

manifest_yaml: str

debim_cost_template

Extracts materials used by the building model and generates a minimal project-scoped price catalog template.

manifest_yaml: str

debim_cost

Maps QTO quantities against unit prices, calculates total project cost, and optionally exports BOQ to CSV.

manifest_yaml: str, prices_yaml?: str, export_csv_path?: str

debim_compile_ifc

Compiles declarative YAML into an open, standardized buildingSMART IFC4 model (.ifc).

manifest_yaml: str, output_ifc_path: str

debim_generate_viewer

Generates a standalone, zero-dependency interactive 3D WebGL HTML viewer with section cut and layer tree.

manifest_yaml: str, output_html_path: str

debim_urban_ingest

Ingests OpenStreetMap Overpass BBox or GeoJSON into native .debim urban manifest YAML.

bbox?: List[float], geojson_str?: str, crs_epsg?: int

Running the MCP Server Locally

# Start MCP server over stdio
debim mcp

🚀 Quickstart

1. Installation

debim is officially available on PyPI and requires Python 3.11+.

Choose your operating system and preferred terminal:

🊟 Windows (PowerShell / Command Prompt)

# Option A: Isolated CLI (Recommended via pipx or uv tool)
pipx install "debim[all]"
# or: uv tool install "debim[all]"

# Option B: Standard pip
python -m pip install --upgrade pip
pip install "debim[all]"

# Option C: Windows Package Manager (Zero-Python / One-Click Native)
# Note: Manifest is currently pending upstream review on microsoft/winget-pkgs
# winget install debim

# Verify installation
debim --help

🍎 macOS (Terminal / zsh)

# Option A: Native Homebrew Tap (Recommended on macOS)
brew install PRIDA-TAKON/debim/debim

# Option B: Isolated CLI (via pipx)
brew install pipx
pipx ensurepath
pipx install "debim[all]"

# Option C: uv tool
uv tool install "debim[all]"

# Option D: Virtual Environment
python3 -m venv .venv
source .venv/bin/activate
pip install "debim[all]"

# Verify installation
debim --help

🐧 Linux (Ubuntu / Debian / Fedora / Arch)

# Option A: Isolated CLI (Recommended on Ubuntu 23.04+ / Debian 12+)
sudo apt update && sudo apt install -y python3-pip python3-venv pipx
pipx ensurepath
pipx install "debim[all]"

# Option B: Virtual Environment
python3 -m venv .venv
source .venv/bin/activate
pip install "debim[all]"

# Option C: uv tool
uv tool install "debim[all]"

# Verify installation
debim --help

ðŸ“Ķ Package Extras Summary

Package Target

Command

Included Capabilities

Core

pip install debim

Fast CLI, Declarative YAML engine, 3D WebGL viewer generator, QTO, Thai CGD āļ§480 BOQ (āļ›āļĢ.4/āļ›āļĢ.5), Modular replication, Pure-Python STEP export

All (Recommended)

pip install "debim[all]"

Full suite: Core + IFC4 Compiler (ifcopenshell) + FastMCP Server + DOCX Specification Builder

IFC only

pip install "debim[ifc]"

Core + buildingSMART IFC4/IFC4X3 compiler (ifcopenshell)

MCP only

pip install "debim[mcp]"

Core + Model Context Protocol server for Claude / Cursor / Antigravity

DOCX only

pip install "debim[docx]"

Core + Specification Book compiler to Microsoft Word (python-docx)

ðŸģ Docker Container (Zero-Install & Sandbox)

If you prefer not to install Python locally or want to run debim in an isolated sandbox for AI agents:

# Pull official pre-built image from GitHub Container Registry (GHCR)
docker pull ghcr.io/prida-takon/debim:latest

# Run debim MCP Server over stdio for AI Agents / Claude Desktop
docker run -i --rm ghcr.io/prida-takon/debim:latest

# Or execute CLI commands in your current directory
docker run --rm -v "${PWD}:/workspace" -w /workspace ghcr.io/prida-takon/debim:latest debim --help

# Alternatively, build the container image locally from source
docker build -t debim .

🔒 Air-Gapped Sandboxes & Zero-Dependency Execution (Pure Standard Library)

In highly secured enterprise environments, air-gapped VMs, or LLM Code Interpreter sandboxes (e.g., ChatGPT Advanced Data Analysis, Claude Artifacts, Gemini Code Execution, Kaggle) where internet access and pip install are restricted:

# Run standalone zero-dependency engine (Pure Python Standard Library: math, json, re, argparse)
# Requires ZERO pip packages:
python skills/debim/scripts/debim_zero.py validate -m model.debim
python skills/debim/scripts/debim_zero.py qto -m model.debim

🛠ïļ Install from Source (Development)

git clone https://github.com/PRIDA-TAKON/debim.git
cd debim
pip install -e ".[all,dev]"

2. Basic Commands (v1.0.0)

# Initialize a new project
debim init my-project

# Validate schema syntax, structural continuity & bounding-box clash detection
debim validate -m examples/farnsworth_house/project.debim

# Run automated building code compliance checks (pytest)
debim test

# Calculate Quantitative Take-Off (Concrete m3, formwork m2, rebar kg)
debim qto -m examples/farnsworth_house/project.debim

# Generate official Thai Government BOQ (CGD āļ§480 with Factor F & steel density)
debim boq --rules cg-v480 --province nakhon_ratchasima -m project.debim -o dist/boq_v480.csv

# Generate project-scoped price template with international classifications
debim cost template -m examples/farnsworth_house/project.debim -o prices.template.yaml

# Estimate project budget & export commercial BOQ to CSV
debim cost -m examples/farnsworth_house/project.debim -p examples/farnsworth_house/prices.yaml -o dist/boq.csv

# Scaffold a new BIM element class boilerplate
debim scaffold element IfcRailing

# Preview 3D model in your browser (Three.js with Hierarchical Layer Explorer)
debim view -m examples/farnsworth_house/project.debim

# Compile declarative YAML to standard IFC4 building model
debim compile -m examples/farnsworth_house/project.debim -o dist/farnsworth_house.ifc

# Ingest Open GIS (Overpass BBox or GeoJSON) into native .debim urban model
debim urban ingest --bbox "13.734,100.558,13.742,100.566" -o dist/asoke.debim
debim urban ingest --geojson road.geojson --crs 32647 -o dist/road.debim

# Compile urban & civil infrastructure to ISO 19650 IFC4.3
debim compile -m dist/asoke.debim -o dist/asoke.ifc

# Launch Model Context Protocol (MCP) server over stdio
debim mcp

🏗ïļ Example project.yaml

schema: IFC4-Minimal
project:
  id: PRJ-2026-001
  name: "Townhouse-Feasibility"
  units: { length: METER, area: SQUARE_METER, volume: CUBIC_METER }

# 1. Spatial Structure
spatial_structure:
  storeys:
    - id: L1
      name: "Level 1"
      elevation: 0.00
      height: 3.50
    - id: L2
      name: "Level 2"
      elevation: 3.50
      height: 3.20

# 2. Reference Grid Axes
grids:
  axes_x: { A: 0.00, B: 4.00, C: 8.00 }
  axes_y: { 1: 0.00, 2: 5.00, 3: 10.00 }

# 3. Materials
materials:
  - id: CONC_240
    name: "Concrete 240 ksc"
    category: concrete
    unit_cost_ref: "MAT-CONC-01"
  - id: AAC_75
    name: "AAC Block 7.5cm"
    category: masonry
    unit_cost_ref: "MAT-AAC-01"

# 4. Elements
elements:
  # Column placed at grid intersection [A, 1]
  - class: IfcColumn
    tag: C-A1
    material: CONC_240
    profile: { shape: BOX, width: 0.20, depth: 0.20 }
    placement:
      grid: [A, 1]
      base_storey: L1
      top_storey: L2
    reinforcement:
      main: "4-DB16"
      stirrups: "RB6 @ 0.15m"

  # Beam spanning between [A, 1] and [B, 1]
  - class: IfcBeam
    tag: B-A1_B1
    material: CONC_240
    profile: { shape: BOX, width: 0.20, depth: 0.40 }
    placement:
      from_grid: [A, 1]
      to_grid: [B, 1]
      storey: L2
    reinforcement:
      main_top: "2-DB16"
      main_bottom: "3-DB20"
      stirrups: "RB9 @ 0.15m"

  # Wall with door host-child relationship
  - class: IfcWall
    tag: W-A1_A2
    material: AAC_75
    thickness: 0.075
    height: 3.10
    placement:
      from_grid: [A, 1]
      to_grid: [A, 2]
      storey: L1
    children:
      - class: IfcDoor
        tag: D1
        dimensions: { width: 0.90, height: 2.00 }
        offset_distance: 1.20

🔎 Empirical Research & Benchmark

debim prioritizes engineering precision and reproducible open science on our Kaggle Cloud Multi-Core Benchmark Suite:

1. ⚖ïļ 3D Visual Regression & Alignment Benchmark (255 Real-World Buildings)

Evaluating blind 3D geometric fidelity against ground-truth IFC models using Geometry Variant Deduplication + Balanced Macro-Averaging across 4,695 representative building elements:

  • ðŸŽŊ 85.50% Median Visual Fidelity: Surpassing the international standard benchmark ($\ge 85%$) across the majority of test suites.

  • 🏗ïļ 89.07% Structural Match: Primary load-bearing elements (columns, beams, slabs, foundations) maintain Grade-A+ geometric alignment.

  • ⚡ 82.64% MEP System Match: Ductwork, drainage, piping, and electrical fixtures align accurately in 3D coordinate planes.

📈 Progression Across Waves:

Global Metric

V1 (Baseline)

V2 (Wave 1-2)

V3 (Round 3 / Latest)

Cumulative Improvement

ðŸŽŊ Median Visual Match

80.90%

84.90%

85.50%

🏆 +4.60% (Exceeded 85%)

⚖ïļ Macro Average Visual Match

70.57%

77.60%

77.71%

ðŸŸĒ +7.14%

📊 Micro Average Visual Match

72.24%

80.35%

80.46%

ðŸŸĒ +8.22%

Passing Elements ($\ge 85%$)

2,865

3,140

3,135 (66.8%)

ðŸŸĒ +270 elements

Top Performing Disciplines

â€Ē Cable Trays (IfcCableCarrierSegment)

-

-

99.1%

🏆 Near-perfect alignment

â€Ē Structural Beams (IfcBeam)

92.1%

94.5%

95.0%

ðŸŸĒ Grade-A+ Framing

â€Ē Bracing Members (IfcMember)

91.8%

91.6%

94.2%

ðŸŸĒ +2.4% (3D Vector Pitch)

â€Ē Railings (IfcRailing)

85.0%

91.2%

93.0%

ðŸŸĒ +8.0% (Passing)

â€Ē Structural Plates (IfcPlate)

10.2%

88.9%

87.8%

ðŸŸĒ +77.6% (Passing)

â€Ē Ceilings (IfcCovering)

11.4%

89.0%

86.4%

ðŸŸĒ +75.0% (Passing)

â€Ē Valves & Piping (IfcValve)

0.0%

82.2%

81.9%

ðŸŸĒ +81.9% (Zero-shot lift)

👉 Want to inspect raw visual data or reproduce tests yourself? Explore the full dataset and code on the Kaggle Benchmark Notebook.


2. ðŸ“Ķ Roundtrip Retention & Storage Reduction Study (407 Real-World OpenBIM Models)

Rigorously benchmarked against 407 real-world projects across architectural, structural, and complex hospital MEP domains:

  • ðŸŽŊ 100.0% Median Retention Rate: Extract and re-compile back to standard IFC4 without element loss.

  • 📊 85.0% Mean Retention Rate: +26.1% retention gain across diverse real-world models (up from 58.9% in Round 1).

  • ðŸ“Ķ 88.4% Average Storage Reduction: Compresses raw IFC files by an average of 88.4% into compact declarative YAML.

  • ⚡ 558M+ LLM Tokens Saved: Prevented 558,629,804 tokens from cluttering agent context windows.

  • ðŸ›Ąïļ 100.0% Modern Schema Crash-Resilience: Zero fatal crashes or unhandled exceptions across standard IFC2X3, IFC4, and IFC4X3 datasets.

📈 Round 1 vs. Round 2 Stress Test Evolution:

Key Performance Indicator

Round 1 Baseline (192 Models)

Round 2 Enhanced (407 Models)

Improvement / Evolution

Total Models Evaluated

192 models

407 models

📈 +112% (Scaled 2.1x dataset)

ðŸŽŊ Median Element Retention

79.0%

100.0%

🏆 +21.0% (Reached 100%)

📊 Mean Element Retention

58.9%

85.0%

ðŸŸĒ +26.1% retention gain

ðŸ“Ķ Mean Storage Compression

94.0%

88.4%

High-fidelity declarative YAML

ðŸ›Ąïļ Modern Schema Crash-Resilience

100.0%

100.0%

Zero fatal crashes on IFC2X3, IFC4, IFC4X3

📖 Read Full Research Paper: debim: An Empirical Study of Declarative Building-as-Code on 407 Heterogeneous Real-World OpenBIM Models
ðŸ“Ķ Kaggle Public Benchmark Dataset: debim-5000-ifc-benchmark
⚡ Kaggle Automated Stress Test: debim-ifc-stress-test


❓ Frequently Asked Questions (FAQ)


📄 License & Attribution

Available Tools

7 tools
debim_compile_ifcC

Compile a declarative BIM YAML manifest into a standard IFC4 building model.

NameRequiredDescriptionDefault
manifest_yamlYes
output_ifc_pathYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden, yet it discloses nothing about whether the file at output_ifc_path is created, overwritten, or requires an existing directory, nor anything about error handling or permissions. It also gives no indication of how a malformed manifest is reported.

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?

A single front-loaded sentence with no filler that states input and output crisply. It is efficient, though the terseness is part of why behavioral and parameter detail is missing.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but for a tool that writes an artifact with zero annotation coverage and zero parameter documentation, the description leaves critical gaps: manifest format expectations, overwrite behavior, and where this fits relative to debim_validate.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, but it only implies what the parameters are. It never explains the expected YAML manifest structure, required manifest keys, path format, or whether the output path must exist — the two most consequential inputs for getting a call right.

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

Purpose4/5

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

The description gives a specific verb ("Compile") and both the input resource ("declarative BIM YAML manifest") and the output artifact ("standard IFC4 building model"), so the transformation is unambiguous. It does not, however, differentiate itself from siblings like debim_validate or debim_generate_viewer, which also operate on the same BIM artifacts.

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

Usage Guidelines2/5

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

There is no guidance on when to invoke this versus debim_validate (validate a manifest) or the cost/QTO tools, and no stated prerequisites such as validating the manifest first. The agent must infer the workflow ordering entirely from the tool names.

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

debim_costB
Calculate full Bill of Quantities (BOQ) and cost estimation.
Matches QTO quantities against unit material and labor prices.
If prices_yaml is omitted, auto-generates a benchmark template.
Optionally exports the complete BOQ to a CSV file.
NameRequiredDescriptionDefault
prices_yamlNo
manifest_yamlYes
export_csv_pathNo

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It usefully discloses the fallback behavior when prices_yaml is omitted and the optional CSV export, but says nothing about file overwrite semantics for export_csv_path, permissions, or other side effects of a tool that can write output.

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?

Four short, front-loaded lines with the core purpose stated first and no filler. Efficient, though the trailing export sentence is a minor detail that could be folded in.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the description covers the main fallback and export behaviors. However, for a tool that can write files with zero annotations and 0% schema coverage, the absence of manifest_yaml explanation and export side-effect details leaves gaps.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It explains the prices_yaml omission case and the purpose of export_csv_path, but leaves manifest_yaml (the only required parameter) entirely unexplained, so coverage is only partial.

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

Purpose4/5

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

States a specific verb and resource ('Calculate full Bill of Quantities (BOQ) and cost estimation') and clarifies the mechanism ('Matches QTO quantities against unit material and labor prices'), which implicitly distinguishes it from debim_qto. It does not, however, explicitly differentiate itself from the closely named sibling debim_cost_template.

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

Usage Guidelines2/5

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

No when-to-use guidance or alternatives are named. The only conditional advice is 'If prices_yaml is omitted, auto-generates a benchmark template,' which is a behavior rather than a usage rule, and the related debim_cost_template sibling is never mentioned.

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

debim_cost_templateC

Generate a minimal project-scoped price catalog YAML template based only on the materials and items actively used by the building model.

NameRequiredDescriptionDefault
manifest_yamlYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose meaningful behavioral traits about the output — that it is "minimal" and filtered to actively-used materials — but says nothing about permissions, file-writing behavior, or determinism. It adds some value beyond structured fields but leaves the operational profile thin.

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?

A tight two-line statement with the verb and deliverable front-loaded and no filler. Only the awkward line break interrupts otherwise clean structure.

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

Completeness2/5

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

An output schema exists, so return values need not be explained. However, with no annotations, an undocumented required parameter, and no guidance on how this template relates to the downstream debim_cost workflow, the description leaves too much for the agent to infer.

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

Parameters2/5

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

Schema description coverage is 0% for the single required parameter manifest_yaml, and the description never mentions or explains it. The agent must guess that the manifest represents the building model input. With coverage this low, the description should have compensated and does not.

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

Purpose4/5

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

States a specific verb ("Generate") and resource ("project-scoped price catalog YAML template"), and scopes it precisely to materials/items actively used by the building model. This differentiates it reasonably from siblings like debim_cost, though it never explicitly names which sibling it complements.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no named alternative. The scoping clause ("based only on materials actively used") implies it should be run against a live model, but the agent must infer when this template is the right call versus debim_cost or debim_qto.

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

debim_generate_viewerB

Generate a standalone, zero-dependency interactive 3D HTML web viewer with OrbitControls, X-Ray, Section Cut, and Layer Explorer.

NameRequiredDescriptionDefault
manifest_yamlYes
output_html_pathYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses the output artifact's nature (standalone, zero-dependency, interactive), but says nothing about writing/overwriting the file at output_html_path, failure modes, or auth needs.

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?

A single tight sentence with the capability front-loaded and feature list following. No waste, though it is arguably too terse given the gaps elsewhere.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the feature list covers what the generated viewer contains. However, with 0% parameter coverage and no annotations, the description leaves the manifest input contract and file-writing behavior unexplained.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate and does not: neither manifest_yaml's expected format/source nor output_html_path's path semantics (absolute? overwrite?) are explained. Only the bare parameter names in the schema give any clue.

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

Purpose4/5

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

States a specific verb (generate) and resource (standalone interactive 3D HTML viewer) and enumerates the delivered features (OrbitControls, X-Ray, Section Cut, Layer Explorer). It is clearly distinct from validate/qto/cost/compile siblings, though it never explicitly says so.

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

Usage Guidelines2/5

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

No guidance on when to use this versus the sibling tools, nor prerequisites such as whether the manifest must first pass debim_validate. The agent must infer that a validated manifest is the expected input.

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

debim_qtoC

Calculate Quantitative Take-Off (QTO) material quantities deterministically. Returns exact concrete volume (m3), formwork area (m2), rebar weight (kg), structural steel (kg), timber volume (m3), masonry area (m2), and excavation (m3).

NameRequiredDescriptionDefault
manifest_yamlYes

Output Schema

NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries the full behavioral burden. It claims deterministic output and lists result units, which is useful, but says nothing about required input validity, failure modes, permissions, or whether output depends on a prior validation step.

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 core action in the first clause, followed by a compact enumeration of outputs. No filler sentences, though the output listing is partially redundant given an output schema exists.

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

Completeness3/5

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

An output schema exists, so return values need not be restated (they are, harmlessly). However, for a single-param tool whose only input is an undocumented manifest, the description leaves the agent without enough context on input requirements or workflow position.

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

Parameters2/5

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

Schema description coverage is 0% and the single parameter manifest_yaml is undocumented in both schema and description. The description never explains what the manifest is, what format/structure it expects, or where it comes from, so it fails to compensate for the coverage gap.

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

Purpose4/5

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

The description states a specific verb and resource: 'Calculate Quantitative Take-Off (QTO) material quantities deterministically', and enumerates the exact quantities produced. It is clearly distinct in substance from siblings like debim_cost, debim_validate, and debim_compile_ifc, though it never names them explicitly to route the agent.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of prerequisites (e.g., whether the manifest must first pass debim_validate), and no mention of alternatives such as debim_cost. The agent is left to infer the position of this tool in the workflow.

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

debim_urban_ingestA
Ingest OpenStreetMap (Overpass API) bounding box or GeoJSON string into native .debim urban manifest YAML.

Args:
    bbox: Optional bounding box [min_lat, min_lon, max_lat, max_lon]
    geojson_str: Optional GeoJSON FeatureCollection string
    crs_epsg: Metric UTM CRS code (default 32647 for Thailand WGS84/UTM Zone 47N)
NameRequiredDescriptionDefault
bboxNo
crs_epsgNo
geojson_strNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It does disclose the external data source (Overpass API), hinting at network dependency, but says nothing about rate limits, failure modes, where the generated manifest YAML is written, or whether the operation is destructive/overwriting. Since an output schema exists, return values need not be described.

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?

One front-loaded sentence establishing purpose and output, followed by a compact Args block that adds real value. Slightly docstring-flavored but no wasted sentences.

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

Completeness3/5

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

An output schema covers the return shape, and all params are explained, but for a tool with zero annotations that performs external network fetches and generates a file artifact, the description should say where the manifest is written and what error conditions look like. Adequate but with clear gaps.

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 0%, yet the description documents all three parameters meaningfully — critically, it gives the bbox element ORDER [min_lat, min_lon, max_lat, max_lon], which the schema's bare number array does not convey, and explains crs_epsg as a metric UTM code with the Thailand 32647 default. It omits what happens when both or neither of bbox/geojson_str are supplied, which is the remaining gap.

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

Purpose5/5

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

States a specific verb (ingest), the source (OpenStreetMap Overpass API bounding box or GeoJSON), and the concrete output artifact (native .debim urban manifest YAML). This clearly distinguishes it from siblings like debim_compile_ifc, debim_qto, and debim_validate.

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

Usage Guidelines3/5

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

The phrase 'bounding box or GeoJSON string' implies two alternative input modes, but the description never states whether they are mutually exclusive, that at least one is required (all params optional, zero required), or when a user should prefer one over the other. No when-not guidance and no mention of siblings as alternatives.

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

debim_validateB

Validate a declarative BIM manifest YAML string. Checks schema syntax, grid consistency, storey heights, and material references.

NameRequiredDescriptionDefault
manifest_yamlYes

Output Schema

NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full disclosure burden. It usefully enumerates what is checked, which is genuine behavioral content, but it omits whether the operation is purely read-only, whether a failing manifest throws or returns structured errors, and whether validation has side effects. Partial coverage only.

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

Conciseness4/5

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

Two tight sentences with the purpose front-loaded and the check list immediately after. No filler, though the check enumeration could be slightly condensed.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the tool is low-complexity with one parameter. However, for a validation gate in a six-tool pipeline, the absence of any guidance on ordering relative to debim_compile_ifc leaves an agent guessing.

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

Parameters3/5

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

Schema description coverage is 0% for the single parameter, so the schema alone contributes nothing. The description compensates by establishing that the input is a YAML manifest string, but adds no syntax expectations, size limits, or format constraints beyond that.

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

Purpose4/5

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

States a specific verb (Validate) and resource (declarative BIM manifest YAML string), and enumerates the checks performed (schema syntax, grid consistency, storey heights, material references). It is clearly distinguishable from write-oriented siblings like debim_compile_ifc, though it never names them explicitly.

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

Usage Guidelines2/5

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

The description says nothing about when to call this versus debim_compile_ifc or debim_qto, nor whether validation is a prerequisite before compiling. No conditions, prerequisites, or exclusions are given; usage must be inferred from the name alone.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 1 tool updatev1.1.0
    • Addeddebim_urban_ingest
  2. 6 tool updatesv0.1.0
    • First observeddebim_compile_ifc
    • First observeddebim_cost
    • First observeddebim_cost_template
    • First observeddebim_generate_viewer
    • First observeddebim_qto
    • First observeddebim_validate

TDQS

B3.3/5.0

Scored across 7 tools

Disambiguation4/5

Each tool maps to a distinct pipeline stage (ingest, validate, qto, cost, template, compile, viewer), so an agent can mostly tell them apart. The only mild overlap is between debim_qto (quantity take-off) and debim_cost (BOQ priced from those quantities), and between debim_cost and debim_cost_template, but descriptions clarify the boundary.

Naming Consistency4/5

All tools share a predictable debim_ prefix with a single domain term following. The verb style varies a bit (ingest, compile, cost, generate, validate, qto), with some being nouns rather than verbs, but the naming is consistently readable and scoped.

Tool Count5/5

Seven tools is well-scoped for a BIM/urban pipeline, each earning its place as a distinct stage. No bloat and no single trivial wrapper.

Completeness4/5

The surface covers a coherent end-to-end flow: ingest, validate, quantity take-off, cost estimation, template generation, IFC compilation, and 3D viewing. Minor gaps exist, such as no explicit manifest load/edit/export tooling and no post-cost reporting beyond CSV, but core workflows are covered.

Maintenance

ActivityNo data
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • A
    license
    C
    quality
    D
    maintenance
    Enables AI assistants to create, edit, and export IFC5/IFCX building information models through natural language, handling spatial structure, elements, geometry, metadata, validation, and export.
    73
    3 npm
    25
    Apache 2.0
  • A
    license
    A
    quality
    D
    maintenance
    Enables AI agents to load, query, and analyze IFC building model files, including spatial structures, elements, properties, materials, and geometry.
    20
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    Read-only BIM query server for agents: structured, policy-bounded queries on IFC/gbXML models with deterministic cited results.
    1
    MIT
  • A
    license
    A
    quality
    B
    maintenance
    An MCP server that lets users query, validate, convert, and compare IFC/BIM files using natural language. Runs fully locally and integrates with AI agents like Claude.
    8
    MIT