Skip to main content
Glama

nickol-knx-mcp

設計時のKNX / ETS6アシスタントをMCPサーバーとして公開。

以下の4つのことができます — すべて実際のKNXバスに触れることなく:

  1. 仕様からプロジェクトを設計 — 機器リスト/プロジェクト仕様を、完全で検証済みのグループアドレス構造および完全な実装ドキュメント一式(ETSインポート可能なXML/CSV、人間が読めるレポート、Home Assistant YAML、受け入れテストプロトコル、アズビルド引継ぎパック)に変換します。

  2. 既存プロジェクトの監査、修復、完成 — 命名規則・DPT & サブDPT・コマンド↔ステータス・KNX Secure・Matter対応を検証し、具体的な修正提案(推定DPT、合成ステータスGA)を取得、完全性を評価し、2つのプロジェクトバージョンを比較します。

  3. スマートホームレイヤーの生成 — 実際のデバイス状態を読み取る、組み立てられたHome Assistantエンティティ(カラーライト、空調、カバー、センサー)を生成し、曖昧なものはすべて人間のレビューに委ねます。

  4. パラメータ化されたルームテンプレートから新しいプロジェクトを構成 — 部屋のリスト(スロットごとにbasic/comfortプリセット付き)から、新しい検証済みプロジェクトを組み立て → 割り当てマニフェスト + ETS GA XML/CSV + デバイスBOM提案。ドライラン、新規プロジェクトのみ(R1)。

内部構造:デバイスライブラリにより、各アクチュエータを実際の通信オブジェクトに展開 — 汎用レシピから、ETSアプリケーションプログラムから直接解析された正確なベンダーオブジェクトモデルまで。

CI License: MIT Python 3.10+ Status: beta Live demo Join the discussion nickol-knx-mcp MCP server Case study

🇷🇺 Русская версия: README.ru.md


新機能 — デモハウス全体。 examples/demo-home には、合成された 239-GA / 47-機能 プロジェクト、ツールが生成したレポート + Home Assistant設定 + ETSエクスポート、そして完全なスマートホーム 「頭脳」 — 概日照明、8要素気候設定値、在/不在/季節/時間ステートマシンと統計 — が含まれており、5ビューのダッシュボードを駆動します。すべてを ライブサイト ↗ でご覧ください。


🖥️ ダッシュボード — Home Assistantでライブ

デモハウスを実行している実際のHome Assistantからのスクリーンショットです。ツールが組み立てたエンティティが動作している様子を示しています:RGBW / RGB / CCTカラーライト、6つの床暖房気候ゾーン(目標、モード、バルブ%)、概日照明カーブ、計算された気候設定値 — 手動設定ではありません。

気候

照明

エネルギー & 統計

在室

▶ ライブサイトでインタラクティブに探索 → · 設定は examples/demo-home/ha-brain にあります。


Related MCP server: PBIP Builder MCP Server

🧪 ステータス & テスター募集

これは公開ベータ版です。完全なパイプラインは合成プロジェクトでのエンドツーエンドのスモークテストに合格しており、実際の数千GA規模のETS5/ETS6プロジェクト(匿名化済み)に対して検証済みです — しかし実際のETSプロジェクトは驚くほど多様で複雑であり、より多くの現場レポートが品質向上に役立ちます。

👉 ETS5/ETS6プロジェクトをお持ちの方は、ぜひお試しいただき、結果をお知らせください。 Real-project test report のIssueを開いてください。このツールは読み取り専用で、バスに接続することはありませんので、テストは安全です(安全モデルを参照)。詳細は CONTRIBUTING.md をご覧ください。

💬 ディスカッションに参加 → — 挨拶、質問、ツールがあなたのプロジェクトで見つけたことの共有など、お気軽にどうぞ。


🗺️ ロードマップ — 実際のインテグレーターの声から

実際のKNXインテグレーターからの最近のレビュー(Discussions内)が今後の方向性を決めています:

  • デバイス間のパラメータ一貫性 (出荷済み — check_device_parameters) — ETSのパラメータ設定が同一の兄弟機と異なるデバイスをフラグ付け:設定値/ヒステリシスが異なるサーモスタット、検出時間が異なる在室検知器。.knxprojから直接デバイスごとのパラメータを抽出し、実際の42~275デバイスプロジェクトで異常値を検出 — 読み取り専用、ETS不要、バス不要 — クリーンなプロジェクトでは何も報告しません(異なるベンダー/インテグレーター流派間での誤検出なし)。

  • プロジェクトポリシープロファイル (出荷済み — check_policy) — プロジェクトをあなた自身の合意されたルール(命名規則、GA分類、コマンド/ステータス例外)に対して検証。インテグレーターごとに慣習が異なるため、普遍的な「プロフェッショナル標準」ではなく、プロファイルがない場合はプロジェクト自体から推測された分類に対して検証します。

  • ルームテンプレートライブラリ — パラメータ化されたルームテンプレートから新しいプロジェクトを構成。R1出荷済み(compose_rooms + validate_room_template:新規プロジェクト、ドライラン、割り当てマニフェスト + ETS XML/CSV + デバイスBOM)。R2計画中:既存プロジェクトへのドッキング + 正確なデバイス選択。

  • ロジックマシン対応 (近日公開 — 研究中) — 同じ読み取り専用の設計時モデルをロジックマシン(Embedded Systems)のインストールにも適用:LMベースのKNXプロジェクトを解析し、同じ命名/DPT/ステータス/トポロジ監査を実行し、同じ引継ぎ出力を生成。これによりLMインテグレーターも、生の.knxprojから得られるのと同じ証拠に基づくプロジェクトモデルを得られます。現在、実際のLogic Machine 5ユニットに対してスコープを検討中。

  • ETS内のグループアドレスリンクについては、意図的に車輪の再発明はしません:ETS内でGAを通信オブジェクトにリンクするには、現在すでにETS App Storeのアドインが存在し、ネイティブのスマートリンキングがETS7で登場予定です — それらを紹介し、読み取り専用の監査と証拠に基づくプロジェクトモデルに焦点を当てます。

テストしたいプロジェクト、壊れるワークフロー、形にしたい機能がありますか? → Discussions。


なぜこれが存在するのか

2026年半ば現在、既製のETS6 ↔ Claude / MCPツールは存在しません。KNXコミュニティは、AI/CLIワークフローを通じてプロジェクトを検査・修正(デバイスやグループアドレスの追加/名前変更)できる統合を明示的に求めています。このパッケージは、まさにその設計時レイヤー — 欠けていた部分 — を埋めます。

推奨される完全なセットアップは4つのレイヤーです。そのうち1つだけをゼロから構築する必要があります:

レイヤー

目的

使用するもの

構築する?

1. ライブ

実行中の家の状態、制御、デバッグ

公式Home Assistant MCPサーバー + KNX (XKNX) 統合

いいえ、すでに存在

2. 設計時

.knxprojを解析、DPT/命名/ステータス + GA意図ノイズ除去を検証、HA YAML(カラーライト + 気候を組み立て) & ETS XML/CSVを生成

nickol-knx-mcp(このパッケージ)

はい — これがギャップ

3. ファイル + Git

YAML/CSV/XML、アドレススキーマのバージョン管理

標準のファイルシステム + git MCPサーバー

いいえ、すでに存在

4. スキル

設計ルール(GA構造、命名、DPT、シーン)+ 運用規律

CLAUDE.md + skills/(ha-git-backup運用コンパニオン)

いいえ、含まれています

設計による安全性: レイヤー2(このサーバー)は物理的にバスに接続できません。ネットワーク/バス依存性はまったくなく、.knxprojを読み取り、制限されたワークスペースにファイルを書き込むだけです。「ライブバスに書き込まない」要件は、約束ではなく構造的に強制されています。家との実際のやり取りは、レイヤー1(Home Assistant)を通じてのみ行われます。


これでできること

📐 シナリオ1 — 仕様からプロジェクトを設計(仕様 → 実装キット)

プロジェクト仕様(機器スケジュール、ケーブルジャーナル、デバイスリスト)を、完全で検証済みのグループアドレス構造に変換 — そしてそれを実装するための完全なドキュメント一式:

  1. デバイスリスト → オブジェクトモデル。 各デバイスは、デバイスライブラリ(decompose_device)を介して実際の通信オブジェクトに展開されます。調光チャンネルは、オン/オフ + ステータス + 相対調光 (3.007) + 絶対値 (5.001) + 輝度ステータス — 「1つのGA」ではありません。床暖房ゾーンは8オブジェクト、パルスメーターは6オブジェクトです。

  2. プロフェッショナルロジックレイヤー。 仕様書だけでは、プロジェクトを完全にする要素(中央&ゾーンマクロ、シーン、在室ロジック、気候制御の骨組み、太陽/風によるシャッターロジック、漏水→遮断チェーン、天文/気象および日時ソース、全範囲の予約)については決して言及されません。この方法論は、KNX協会標準、公開されているメーカーのドキュメント、実際のプロフェッショナルな施工済みETSプロジェクト(匿名化)の研究から抽出された、これらの完全性パターンをエンコードしています。

  3. 構造と規律。 3レベルのアドレッシング、ゾーン+機能の命名、コマンド↔ステータスのペアリング、すべてのアドレスにDPT。

  4. 成果物(各コマンド1つ):ETSインポート可能なXML/CSV · Markdownレポート · Home Assistant YAML · 機能受入試験プロトコル · 施工済み引渡しパック(在庫、GAマップ、カバレッジ%、Secure姿勢、QA所見、トポロジSVG)。

完全な方法論:docs/spec-to-structure.md。実際の施工済みETSプロジェクト(3,600以上のグループアドレス)を仕様書のみから再構築して現場検証済み:約92%の構造的一致(分類、ドメイン、自動化ロジック、DPT分布)、検証エラーゼロ — 残りの差分はインテグレーターのデバイスごとのパラメータ設定であり、仕様書にはエンコードされていません。

🔍 シナリオ2 — 既存プロジェクトの監査、修復、完了

  • 読み取りと分類。 xknxproject を介してパスワード保護されたETS5/ETS6 .knxproj を解析。DPTと多言語(EN/DE/RU)の名前キーワードから、すべてのGAをカテゴリ(照明/シャッター/HVAC/センサー/シーン/エネルギー/診断)と種類(コマンド/ステータス/センサー)で分類。GAの目的タグ付け(functional / reserve / logic / scratch)により、意図的なプレースホルダーをエラーリストから除外し、レポートが誤警報を発しないようにします(実際の685-GAプロジェクトでは、誤エラーが29→6に減少)。

  • 検証(analyze_all ですべてを実行):命名と構造 · 欠落ステータスオブジェクト(ETS-Functionロールを優先、次に名前トークンペアリング、位置ペアリング — 1:1の名前を持つ並列ステータス中間 — および自己報告R+Tオブジェクト) · 欠落/不整合なDPT + サブDPTの健全性(5.001を持つ「温度」GAはフラグが立てられる) · 相対調光のみ · KNX Secure姿勢(セキュア化 vs 平文、混合グループ、キーリングチェックリスト — 鍵素材は決して読み取られない) · Matter対応 · エネルギードメインカバレッジ。

  • フラグを立てるだけでなく修復(suggest_repairs):名前からDPTを推測、疑わしいサブDPTを修正、空きアドレススロットに欠落ステータスGAを合成、絶対輝度GAを追加。提案のみ — 人間がレビューし、受け入れられたGAはETSエクスポートに供給されます。実際の3,646-GAプロジェクトでは:145の具体的な提案(32のDPT推測、112の合成ステータスGA)。

  • ジョブを完了:grade_completeness(骨組みのみ → 施工済みスコア)、suggest_names、diff_projects(2つの.knxprojリビジョンのセマンティック差分:追加/削除/DPT変更/名前変更/セキュア変更)、その後レポート、引渡しパック、テストプロトコルを再生成。

🏠 シナリオ3 — スマートホームレイヤーの生成(Home Assistant)

  • 控えめにエンティティを組み立て:カバー → カラー/調光可能ライト(オン/オフ + 輝度 + RGBW/RGB/色温度 + ステータス) → スイッチ → 気候(現在温度、目標温度ステータス、運転/コントローラーモード、バルブ値) → センサー/バイナリ。すべてのエンティティは、デバイスが報告可能な場所に state_address を取得 — HAは実際の状態を読み取り、決して推測しません。

  • レビュー優先:あいまいなもの(DPT 5.001 — 輝度かブラインド位置か?)は推測されません — 説明とともにreviewリストに送られます(invert_position / 走行時間など、どの.knxprojもエンコードしないアクチュエータ依存のカバーフラグを含む)。

  • 追加機能:日時ブロードキャスト用のexposeブロック(DPT 19.001)、Matter対応リント、KNX IoT(Turtle/RDF)セマンティックエクスポート。

  • 家のライブ制御は公式のHome Assistant統合(レイヤー1)に残ります — このサーバーはその設定を準備するだけです。

  • 運用コンパニオン:skills/ha-git-backup — デプロイ後の設定のライフ:/configの実際のgit履歴(デプロイキー + pre-commitシークレットスキャナー)に加え、GitHub Releases内の暗号化されたオフサイトバックアップ、月次リストア訓練付き。

🧱 シナリオ4 — 部屋テンプレートから新しいプロジェクトを構成

  • 白紙からではなく部屋から:6つの組み込みパラメータ化された部屋テンプレート(寝室、子供部屋、リビング、キッチン、バスルーム、廊下)から選択し、スロットごとにbasic / comfortプリセットを選択(家は快適な気候と基本的な照明を混在可能)、compose_roomsが新しいプロジェクトを組み立てます。

  • 出力:割り当てmanifest(メイン = ドメイン、ミドル = ロール、サブ = 連番)、既存のジェネレーターを介したETSインポート可能なGA XML/CSV、およびデバイスライブラリからのデバイスBOM提案。

  • 実際のリーダーによる検証:生成された.knxprojは標準のload_project(サードパーティプロジェクトに使用されるのと同じパス)を介して再読み取りされ、4つのリンターすべて(命名/欠落ステータス/DPT/ポリシー)をエラー0 / 警告0で通過します。

  • デフォルトでドライラン、新規プロジェクトのみ。 テンプレート形式は公開契約です(room_templates/SCHEMA.md):識別子はロケールに依存しないslot_idであり、人間の名前ではありません。

  • R2: 既存プロジェクトへのドッキング + 正確なデバイス選択 — 計画中。

🧩 基盤 — 成長するデバイスライブラリ

  • parse_devices_from_project は、任意の.knxproj / .knxprod内のメーカーアプリケーションプログラムから、正確なベンダーオブジェクトモデル — HDL/Ekinexのような参照レベル(ComObjectRef)パブリッシャーを含む — を抽出します:オブジェクト番号、名前、サイズ、DPT、C/R/W/T/Uフラグ、チャンネルごとのブロックストライド — 決定論的かつPIIセーフ(ベンダーカタログデータのみ。ファイルのクライアントプロジェクト部分は決して読み取られません)。

  • NICKOL_KNX_CATALOGをカタログに向けると、decompose_deviceは汎用レシピではなく正確なモデル(catalog-exact)で応答します — カタログは、あなたがフィードするプロジェクトと製品データベースからオンデマンドで成長します。

  • ベンダーが宣言されたDPTなしで出荷するオブジェクトは、正直にunverifiedのまま — 決して推測されません。

すべての書き込みはワークスペースディレクトリ(NICKOL_KNX_WORKSPACE、デフォルト./knx-workspace)にのみ行われます。それ以外への書き込みは拒否されます。


インストール

Python 3.10+ が必要です。

git clone https://github.com/NickoScope/nickol-knx-mcp.git
cd nickol-knx-mcp
python3 -m venv .venv && source .venv/bin/activate
pip install -e .

依存関係:mcp>=1.10、xknxproject>=3.8、PyYAML>=6.0。

Debian/Ubuntuで、pipが外部管理環境について警告する場合は、venvを使用するか(上記参照)、pip install -e . --break-system-packagesを実行してください。PyJWTが競合する場合は、最初にpip install mcp --ignore-installed PyJWTを実行してください。

確認:

python tests/test_pipeline.py     # synthetic 16-GA project, end-to-end smoke test
nickol-knx-mcp                    # start the MCP server (stdio)

Claudeへの接続

Claude Desktop

examples/claude_desktop_config.json は、nickol-knx + filesystem + git + home-assistant を配線します。最小限の断片(macOS設定パス:~/Library/Application Support/Claude/claude_desktop_config.json):

{
  "mcpServers": {
    "nickol-knx": {
      "command": "nickol-knx-mcp",
      "env": { "NICKOL_KNX_WORKSPACE": "/path/to/your/knx-workspace" }
    }
  }
}

Claude Code

claude mcp add nickol-knx \
  -e NICKOL_KNX_WORKSPACE="$HOME/knx-workspace" \
  -- /absolute/path/to/.venv/bin/nickol-knx-mcp

次に、CLAUDE.mdをプロジェクトルートに配置します — これはETSアシスタントスキルとして機能します(設計ルール、安全ルール、3レベルGA構造、コマンド/ステータスペアリング、DPT規律、命名、KNX Secureキーリング処理、推奨ワークフロー)。


MCPツール(31)

読み取り

ツール

目的

load_project(path, password?, language?)

.knxprojを解析(読み取り専用)してキャッシュ

list_group_addresses(category?, kind?)

分類とフィルターでGAを一覧表示

get_devices()

デバイスとその通信オブジェクト

get_topology()

トポロジ(エリア/ライン/デバイス)

explain_ga(address)

1つのGAの来歴:なぜこのように分類されたか — 信頼度階層(権威あるETS Function > 構造的DPT > ヒューリスティックな名前)による決定ごとの証拠、ステータスのペアリング方法、および競合(名前が"AC"と言い、DPTが照明と言う → contested)

検証

ツール

目的

check_naming(name_regex?)

命名規則 / 3階層構造の検証

check_missing_status()

ステータスオブジェクトがないアクチュエータを検出

check_dpt()

欠落・矛盾したDPT +サブDPTの妥当性チェック(温度→9.001、電力→14.056…)

check_topology()

トポロジ容量+個別アドレスの有効性(TP1 64/セグメント、256/ライン、有効かつ一意なA.L.D、カプラの存在 — KNXハンドブック準拠)

check_secure()

KNXデータセキュアの状態+キーリング引継ぎチェックリスト

check_matter()

Matter対応リント(Matterクラスタにマッピング可能な機能を判定)

check_energy()

計量・エネルギーDPTチェック+PV/バッテリー/EVSEのスキャフォールド

analyze_all(name_regex?)

全チェックを一括実行

check_policy(profile_path?, write_example_to?)

プロジェクトポリシープロファイル(メイングループ分類、命名規則、ペアリング)に対する検証 — プロファイル未指定時はプロジェクト自体から推論した分類体系を使用;あなたの規約から逸脱するGAをフラグ付け(普遍的な標準ではない)

修復と設計

ツール

目的

suggest_repairs()

問題の指摘だけでなく修正案を提示 — DPTの推論、ステータス・輝度GAの合成

suggest_names()

命名規則の改善提案

decompose_device(order_number, channels?)

デバイス→GA分解:ローカルカタログ(NICKOL_KNX_CATALOG)からの正確なベンダーモデル、または汎用レシピ

list_device_recipes()

組み込みデバイスライブラリ(Zennio + ABBファミリ)

parse_devices_from_project(path, output_path?, password?)

.knxproj/.knxprod内のアプリケーションプログラムから正確なデバイスオブジェクトモデルを抽出 → デバイスライブラリYAML(ローカルカタログに供給)

check_device_parameters(path, password?, min_group?)

デバイス間パラメータQA:ETSパラメータが同一型の兄弟デバイスと異なるデバイスを検出(異常なサーモスタット・センサー) — clear_outliers(誤りの可能性大)+ split_configs(バランスの取れたバリアント、要レビュー)

grade_completeness()

プロジェクトの完成度評価:骨組み段階か施工完了段階か

diff_projects(path_a, path_b, …)

2つの.knxprojバージョン間の意味的差分

生成

ツール

目的

generate_ha_package(output_path?)

HA KNX YAML(色+気候+露出)+レビューリスト

generate_ets_group_addresses(fmt="xml"|"csv", output_path?)

ETSインポート可能なGA

generate_handover_pack(output_dir?)

施工完了引継ぎパッケージ:在庫一覧、GAマップ、カバレッジ、セキュア、QA、topology.svg

generate_test_protocol(output_path?)

機能受入試験プロトコル(コマンド→期待ステータス)

generate_knx_iot(output_path?)

KNX IoTセマンティックエクスポート(Turtle/RDF)

project_report(output_path?, name_regex?)

Markdownレポート

workspace_info()

ワークスペースパス+安全性保証

ルームライブラリ(R1 — ルームテンプレートから新規プロジェクトを構成)

ツール

目的

validate_room_template(template?, path?)

ルームテンプレート(組み込みslot_idまたはカスタムYAML)をR1スキーマに対して検証

compose_rooms(rooms, language="ru", project_name?, output_dir?, dry_run=true)

ルームリストから新規プロジェクトを構築 → 割り当てmanifest、ETS GA XML/CSV、デバイスbom提案;生成された.knxprojは標準ローダーで再読み込みされリントされる(エラー0 / 警告0)。新規プロジェクトのみ、デフォルトはドライラン。


典型的なワークフロー

  1. load_project → .knxprojを指定(保護されている場合はパスワードも)。

  2. analyze_allまたはproject_report → 結果を確認;まず人間によるレビュー。

  3. ETSで命名規則/DPT/ステータスを修正(生成されたGAをインポートするか手動で)。

  4. generate_ets_group_addresses(fmt="xml") → 不足しているGAをETSにインポート。

  5. generate_ha_package → YAMLをHome Assistantに配置;review項目を手動で解決。

  6. すべて(.knxprojエクスポート、HA設定、アドレススキーマ)をGitで管理。

  7. 実際の住宅にはHome Assistant MCP(レイヤー1)経由でのみアクセス。


制限事項(正直に)

  • コマンド/ステータスおよびカテゴリ分類はヒューリスティック(DPT+名前+ETS Functions)です。 Functionsがなく非標準の名前が使われている複雑なプロジェクトでは、偽陰性/偽陽性が発生する可能性があります — そのためレポートは常に人間によるレビュー用であり、曖昧なものは設定に含めずreviewに回します。

  • DPT 5.001は構造的に曖昧です(輝度か位置か);キーワードで判別します — 非標準の命名の場合は再確認してください。

  • HAジェネレーターは保守的です:誤ったエンティティを出力するよりも、アイテムをreviewに回すことを優先します。

  • サーバーはバスに書き込まず、ETSと直接通信しません — ETSとのやり取りはGAのファイルインポート/エクスポートのみです。

  • 合成デモプロジェクトおよび実際の数千GA規模のETS5/ETS6プロジェクト(匿名化)で検証済み — しかし実際の.knxprojファイルは多種多様であり、まだベータ版です。そのためテスター募集を行っています。


🔒 セキュリティモデル

  • 構造的にバスアクセスなし。 依存関係ツリーにネットワーキングやバスライブラリは含まれていません。 workspace_info()はbus_access: falseを報告します。

  • プロジェクトに対して読み取り専用。 project.pyのみが.knxprojにアクセスし、読み取りのみ行います。

  • 書き込み先を制限。 すべての出力はNICKOL_KNX_WORKSPACE内に制限され、外部パスは拒否されます。

  • 悪意のあるプロジェクトファイルに対する防御。 .knxprojは信頼できないZIP-of-XMLであるため、解析は safexml.pyを経由します:DTD/エンティティXMLは拒否(billion-laughs / XXE攻撃対策)、アーカイブは サイズ/エントリ数/展開率の上限とパストラバーサル名の拒否により事前チェックされます(zip爆弾対策)。

  • 人間がループに参加。 project_reportを生成し、ETSにインポートしたりHome Assistantにデプロイする前にレビューしてください。

セキュリティ問題を発見しましたか? SECURITY.mdを参照してください。


パッケージ構成

nickol-knx-mcp/
├── nickol_knx_mcp/
│   ├── dpt_map.py        # DPT → category / kind / HA platform / value_type
│   ├── project.py        # the ONLY module that reads .knxproj (read-only)
│   ├── safexml.py        # hardened ZIP/XML parsing of untrusted .knxproj (zip-bomb / XXE defense)
│   ├── pairing.py        # command↔status pairing by name tokens
│   ├── analyze.py        # naming / missing-status / DPT checks
│   ├── generate_ha.py    # Home Assistant KNX YAML generation
│   ├── generate_ets.py   # ETS XML + CSV generation
│   ├── report.py         # Markdown report
│   ├── room_library.py   # Room Library R1 — compose a new project from templates
│   ├── room_templates/   # built-in room YAML templates + SCHEMA.md (public contract)
│   └── server.py         # FastMCP server, 31 tools, confined writes
├── tests/test_pipeline.py
├── examples/claude_desktop_config.json
├── skills/
│   └── ha-git-backup/    # ops companion: 2-circuit HA backup (git history + encrypted offsite)
├── CLAUDE.md             # ETS Assistant skill / playbook
├── pyproject.toml
└── README.md

コントリビューション

テスターやコントリビューターを歓迎します — 特に実プロジェクトのテストレポートを歓迎します。 CONTRIBUTING.mdおよびissueテンプレートを参照してください。

ライセンス

MIT © 2026 Nikolay Miroshnichenko

KNX Associationとの提携や推奨はありません。「KNX」および「ETS」はKNX Association ccの商標です。 これは独立したコミュニティツールです。

Available Tools

32 tools
analyze_allC

Run every check and return the report summary plus all findings.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_regexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 burden of disclosing behavioral traits. It does not state whether the tool is read-only, requires authentication, or has any side effects. The only behavior described is running checks and returning results.

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 sentence that conveys the core purpose without waste. However, it could be slightly more structured by stating the output format or mentioning the parameter.

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?

Given the output schema exists but is not provided, the description is incomplete. It does not explain what 'every check' entails, the structure of the report summary, or how to interpret findings. The presence of 12 sibling tools suggests the need for clearer context.

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

Parameters1/5

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

The input schema has 0% description coverage, and the description does not mention the only parameter, name_regex. The description adds no meaning beyond what the schema provides.

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

Purpose5/5

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

The description clearly states the tool runs every check and returns the report summary plus all findings. This distinguishes it from sibling tools like check_dpt, which are individual checks.

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 tool versus alternatives. The description does not explain scenarios where running all checks is appropriate, nor does it mention that individual sibling checks exist for specific needs.

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

check_device_parametersA

Find the device whose ETS parameter settings differ from its N identical siblings — the odd thermostat/sensor out (e.g. one thermostat with a different setpoint/hysteresis, one presence detector with a different detection time).

Reads per-device parameter values straight from the `.knxproj` project part
(data xknxproject does not expose), groups identical devices by application
program, and returns `clear_outliers` (a strong majority with a small minority —
likely a mistake) and `split_configs` (balanced 2+ variants — review, often two
zones). Numeric config parameters are listed first; names are resolved from the
device application program. Read-only, no ETS/bus. Give a real `.knxproj` `path`
(a password-protected/encrypted project cannot be read).
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
passwordNo
min_groupNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It clearly states the tool is read-only, does not touch ETS/bus, reads directly from the .knxproj part, and cannot handle password-protected projects. It also explains the grouping logic and output categories. It does not disclose potential performance characteristics or failure modes beyond the password limitation, but the core behavioral traits are well covered.

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?

The description is dense but well-structured: it opens with the core purpose, then explains the data source, grouping logic, output categories, and constraints. Every sentence adds value, though the final sentence about password protection could be integrated more tightly. It is longer than the ideal but earns its length by covering multiple behavioral aspects.

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

Completeness4/5

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

Given the tool's complexity (grouping, outlier detection, two output categories) and the absence of annotations, the description is quite complete. It explains the input requirements, the read-only nature, the output structure, and a key limitation. It does not explicitly document the 'min_group' parameter or edge cases like what happens when no outliers are found, but the output schema likely covers return values. Overall, an agent has enough to invoke it correctly.

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 description coverage is 0%, so the description must compensate. It explains the 'path' parameter implicitly by requiring a real .knxproj path and noting password-protected projects cannot be read. It does not explicitly explain 'password' or 'min_group' semantics, but the description's mention of 'strong majority' and 'balanced 2+ variants' hints at grouping thresholds. The output schema likely clarifies the return structure, and the description adds meaningful context about what the tool does with the path.

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

Purpose5/5

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

The description states a specific verb ('Find'), a precise resource (device parameter settings in a .knxproj project), and a clear outcome (identifying the odd device among identical siblings). It also distinguishes itself from siblings by focusing on parameter settings rather than naming, topology, or security, and it names the two output categories (clear_outliers, split_configs).

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

Usage Guidelines5/5

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

The description explicitly says when to use this tool: to find devices whose ETS parameter settings differ from identical siblings. It also gives exclusions: a password-protected/encrypted project cannot be read, and it is read-only with no ETS/bus involvement. This is strong guidance for an agent deciding between this and sibling tools like check_naming or check_topology.

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

check_dptB

Detect missing, inconsistent or mismatched DPTs.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only states the detection function but does not disclose whether the tool has side effects, requires authentication, or is read-only. The term 'detect' implies read-only, but this is not explicit.

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?

The description is a single sentence, front-loaded with the verb 'Detect'. It is concise, though it could include more context without becoming verbose.

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?

Given no parameters and an output schema, the description is minimal. It does not explain what DPTs are or in what context the tool operates (e.g., a loaded project). An agent may need to infer the scope from sibling tool names.

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?

The tool has zero parameters, so the input schema is fully covered. Description adds no parameter info, but none is needed.

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 the tool detects missing, inconsistent, or mismatched DPTs, which is a specific verb and resource. It distinguishes from sibling tools like check_missing_status and check_naming, but 'DPTs' is not explicitly defined, mildly affecting clarity.

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 is provided on when to use this tool versus alternatives such as check_missing_status or check_naming. The agent has no context for selection.

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

check_energyA

Check the metering/energy domain (energy DPTs 13.x / 14.056) and suggest a per-circuit / PV / battery / EVSE structure for the HA energy dashboard.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It mentions 'check' and 'suggest', implying a read-only operation, but does not explicitly state it does not modify data, require permissions, or have side effects. The description is adequate but lacks full transparency.

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

Conciseness5/5

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

The description is a single, well-structured sentence of about 20 words. It front-loads the action and domain immediately, includes specific DPTs and components, and contains no redundant or unnecessary words.

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

Completeness4/5

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

Given the tool's simplicity (0 parameters, output schema exists), the description is fairly complete. It explains what the tool does and what it suggests. However, it does not mention prerequisites (e.g., a loaded project) or the output format, though the latter is presumably covered by the output schema.

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?

The tool has zero parameters, so the description does not need to explain parameter behavior. With 100% schema coverage (none), the baseline is 4. The description adds no parameter info, which is appropriate given the lack of parameters.

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

Purpose5/5

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

The description clearly states the tool's action: 'check the metering/energy domain' and 'suggest a per-circuit / PV / battery / EVSE structure for the HA energy dashboard.' It specifies the energy DPTs (13.x / 14.056) and distinguishes itself from sibling tools like check_dpt and check_matter by focusing on energy dashboard structure.

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?

While the purpose implies the tool is for energy dashboard setup, there is no explicit guidance on when to use it versus alternatives or when not to use it. Users can infer its applicability from the domain focus, but clearer exclusions or prerequisites would improve this dimension.

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

check_matterB

Matter-readiness lint: which controllable functions round-trip to a Matter cluster (have command + status + a decodable DPT) and which won't.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

Without annotations, the description should disclose behavioral traits. It describes the tool as a 'lint', implying a read-only analysis, but does not specify whether it modifies state, requires specific permissions, or how results are presented. The existence of an output schema helps but the description itself lacks behavioral context.

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

Conciseness5/5

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

The description is a single, well-crafted sentence that conveys the core purpose efficiently. Every word earns its place; no redundancy or fluff.

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?

Given no parameters and an output schema present, the description is mostly complete, but it does not explain what the output represents or provide any examples of checks performed. For a lint tool with zero parameters, it could be more thorough in describing what 'Matter-readiness' entails.

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?

There are no parameters, so the input schema trivially covers everything. The description does not need to add parameter information, and the baseline score of 4 is appropriate.

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 clearly states the tool performs a lint check for Matter-readiness, specifying it checks which controllable functions round-trip to a Matter cluster. This distinguishes it from sibling tools like check_dpt or check_energy, though it could be more explicit about what 'controllable functions' refers to.

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 description implies usage when assessing Matter compatibility but provides no explicit guidance on when to use this tool versus alternatives like check_dpt or check_naming. No exclusions or alternative references are given.

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

check_missing_statusB

Detect controllable GAs lacking a status/feedback counterpart.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits, but it only states what the tool detects. It does not mention whether the tool is read-only, whether it has side effects, or what the output format looks like (though an output schema exists). The description is insufficiently transparent.

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

Conciseness5/5

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

The description is a single concise sentence that conveys the core purpose without unnecessary words. It is well front-loaded and efficient.

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?

Given the lack of annotations and a simple input schema, the description provides a basic understanding. However, it does not explain domain-specific terms ('GA', 'controllable', 'status/feedback counterpart'), and with an output schema present, more detail on the return value would improve completeness.

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?

The input schema has zero parameters, and schema description coverage is 100% (vacuous). The description adds meaning by specifying the detection criterion (controllable GAs missing status/feedback), which helps understand the tool's purpose without needing parameter details.

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 clearly states the tool detects controllable GAs lacking a status/feedback counterpart. The verb 'detect' and the resource 'controllable GAs' are specific. However, it does not explain what 'GA' stands for, which may reduce clarity for agents unfamiliar with the domain.

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 is provided on when to use this tool versus alternatives like 'analyze_all' or 'check_naming'. There are no preconditions, examples, or notes on when to use or avoid this tool.

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

check_namingC

Validate naming conventions and 3-level structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
name_regexNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden for behavioral disclosure. It indicates a read-only validation, but does not explicitly state that the tool does not modify state, nor does it disclose any side effects, permissions needed, or output format. The minimal description fails to provide transparency beyond the implied non-destructive nature.

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

Conciseness3/5

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

The description is a single sentence, which is concise, but it lacks structure and does not front-load critical information. It earns its place but could be expanded with minimal additional sentences to improve clarity without sacrificing conciseness.

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?

Given the existence of an output schema and one optional parameter, the description is insufficient. It does not explain return values, error conditions, or typical use cases. The sibling tools suggest a validation domain, but the description does not leverage that context to make the tool's role clearer.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not explain the sole parameter 'name_regex'. The agent has no clue what regex pattern to provide, its purpose, or format. This missing semantic information severely hampers correct usage.

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 specifies a verb ('Validate') and objects ('naming conventions and 3-level structure'), making the tool's purpose clear. However, it lacks specificity about what constitutes naming conventions and 3-level structure, and does not distinguish it from sibling validation tools like check_dpt.

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 is provided on when to use this tool versus alternatives. Sibling tools exist (e.g., check_dpt, check_missing_status) but the description does not mention any context, prerequisites, or exclusions, leaving the agent without decision criteria.

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

check_policyA

Validate the loaded project against a Project Policy Profile — your agreed rules (main-group taxonomy, naming regex, command/status exemptions), not one universal "standard". Flags GAs whose domain doesn't match the main group your policy assigns, and names that don't match your pattern. Pass profile_path to a YAML profile (omit to validate against the taxonomy inferred from the project itself). Set write_example_to to drop a commented example profile into the workspace — seeded from the loaded project's own main groups (mains that do not exist in the project are not written). Report-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
profile_pathNo
write_example_toNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It explicitly states 'Report-only', which is a critical behavioral trait. It also discloses what gets flagged (GAs with domain mismatches, naming mismatches) and how the example profile is seeded (only mains that exist in the project are written). This covers the key side effects and constraints well, though it doesn't detail return format (but output schema exists).

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?

The description is moderately long but every sentence carries meaningful information. It front-loads the core purpose and then details parameters and side effects. It could be slightly more concise, but the structure is logical and the emphasis on key constraints (report-only, seeding) is effective.

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

Completeness4/5

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

Given the tool has an output schema and two optional parameters, the description covers the essential behavior: what it validates, how to customize via profile_path, and how to generate an example. It explains the seeding nuance and the report-only nature. It doesn't elaborate on error handling or performance, but these are minor given the output schema and the tool's relative simplicity.

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

Parameters5/5

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

Schema coverage is 0%, so the description must fully explain parameters. It does: profile_path is described as a YAML profile path with an omission behavior (infer from project), and write_example_to is described as dropping a commented example profile seeded from the project's main groups. This adds substantial meaning beyond the bare schema.

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

Purpose5/5

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

The description clearly states a specific verb ('Validate') and resource ('loaded project against a Project Policy Profile'), and explicitly distinguishes it from a generic standard by emphasizing 'your agreed rules'. It also names the exact checks performed (main-group taxonomy, naming regex, exemptions), making it distinct from siblings like check_naming and check_secure.

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

Usage Guidelines4/5

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

The description gives clear context on when to use the tool: when you have an agreed policy profile. It explains the optional profile_path behavior (omit to infer from project) and the write_example_to use case. It doesn't explicitly name alternative tools, but the purpose is specific enough that an agent can infer when not to use it. It lacks explicit 'use X instead' guidance, so not a 5.

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

check_secureA

Summarise KNX Data Secure posture + the keyring handover checklist.

Reports how many group addresses are secured vs plaintext, flags middle groups that mix secure and plaintext addresses (a function is only as secure as its weakest GA), and emits the ETS/HA keyring workflow as a checklist. Report-only — this server never touches key material.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description clearly states the tool is report-only and never touches key material, providing key behavioral transparency. However, it does not disclose other traits like performance or limits.

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

Conciseness5/5

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

The description is three sentences with no wasted words, front-loaded with the main purpose, and efficiently covers the tool's actions and safety.

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?

Given zero parameters and an output schema (implied by 'report-only'), the description sufficiently describes the output: counts, flags, and checklist. No 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?

There are zero parameters and 100% schema coverage, so the description need not add parameter info. Baseline is 4, and no additional detail is necessary.

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

Purpose5/5

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

The description uses a specific verb ('summarise') and resource ('KNX Data Secure posture') and clearly distinguishes from sibling tools like analyze_all or check_dpt by focusing on security posture and keyring workflow.

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 description explains what the tool does but does not explicitly state when to use it versus alternatives or provide exclusions. Usage is implied for security assessments.

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

check_topologyA

Check topology capacity and individual-address validity (KNX Handbook).

Flags lines over the TP1 segment (64) / line (256) limits, invalid or duplicate individual addresses, and multi-line projects missing a coupler.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It describes what it checks and flags (line limits, addresses, couplers), which is informative. However, it does not explicitly state whether the tool is read-only, whether it modifies the project, or what the output structure looks like. Since an output schema exists, the return format is covered, but the side-effect profile is not disclosed. The description adds value beyond the schema by detailing the specific validity checks, but stops short of full transparency.

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

Conciseness5/5

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

The description is two sentences: the first states the tool's purpose and reference to the KNX Handbook, the second lists the specific checks performed. It is front-loaded with the core action and resource, and every sentence adds essential information. There is no redundancy or padding.

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?

For a zero-parameter check tool with an output schema, the description is complete. It clearly states what the tool does and what conditions it flags, which is all an agent needs to decide when to invoke it. The presence of an output schema covers return-value details. No prerequisites or additional context appear necessary, given the sibling tools like load_project imply a project is already loaded.

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?

The input schema is an empty object with zero parameters, so there is nothing to explain. The baseline for zero parameters is 4, and the description appropriately does not attempt to describe non-existent parameters. The tool takes no arguments, so parameter semantics are trivially satisfied.

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

Purpose5/5

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

The description uses a specific verb 'Check' with a clear resource: 'topology capacity and individual-address validity'. It enumerates exactly what it flags (line limits, invalid/duplicate addresses, missing coupler), which distinguishes it from sibling check tools like check_naming or check_secure. The purpose is unambiguous and action-oriented.

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

Usage Guidelines4/5

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

The description implies its use case: validating topology constraints on a project. It provides clear context on what it covers, but does not explicitly name alternatives or state when not to use it. Since the tool name and description align with the 'check' family, the usage context is clear enough for an agent to select it appropriately, but lacks explicit exclusionary guidance.

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

compose_roomsA

Compose a new KNX project from a list of room templates (constructor).

``rooms`` is a list of specs, each: ``{template, preset?, slot_presets?,
params?, label?}`` — e.g. ``{"template": "bedroom", "preset": "comfort"}``.
``preset`` is basic|comfort (per-room); ``slot_presets`` overrides individual
slots (mix comfort climate with basic lighting); ``params`` overrides template
defaults (window/circuit counts); ``label`` sets a custom zone name.

Pipeline: resolve templates+params to a functional model, allocate group
addresses (main = domain, middle = role, sub sequential), write a real
``.knxproj`` and **re-read it with the standard loader**, then run our linters
on the re-read project. Output: a ``manifest`` (allocation), ETS GA XML/CSV,
and a device ``bom`` proposal from the device library.

R1 builds NEW projects only and is dry-run by default (nothing written). Set
``dry_run=false`` with ``output_dir`` (a folder inside the workspace) to write
the .knxproj, ETS exports, manifest.yaml and bom.yaml. Docking into an
existing project and exact device selection are R2. Never touches a bus.
ParametersJSON Schema
NameRequiredDescriptionDefault
roomsYes
dry_runNo
languageNoru
output_dirNo
project_nameNoRoom Library house

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations, the description carries full burden. It discloses the dry-run default, that setting dry_run=false with output_dir writes files, the re-read validation step, linter execution, and outputs (manifest, GA XML/CSV, BOM). It also states 'Never touches a bus' for safety. This is comprehensive.

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?

The description is structured with the purpose up front, followed by parameter details and then the pipeline and constraints. It is longer than a one-liner but every sentence adds useful context. The front-loading of the core action aids quick comprehension.

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?

The description covers the entire workflow: input structure, processing pipeline, outputs, and R1/R2 limitations. It includes the dry-run default and file writing conditions. Given the output schema exists, the lack of a detailed return format is not a gap. No essential information for correct invocation 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 0%, so the description must explain parameters. It thoroughly details the 'rooms' structure (template, preset, slot_presets, params, label) and explains dry_run and output_dir semantics. It does not explicitly describe 'language' or 'project_name', but these have sensible defaults and are self-explanatory; the description compensates for the critical parameters.

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

Purpose5/5

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

The first sentence states a specific verb ('Compose') and resource ('new KNX project from a list of room templates'), clearly identifying the tool as a constructor. It distinguishes itself from siblings like check_naming or suggest_repairs by emphasizing 'new' projects, and the pipeline description further clarifies its unique role.

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

Usage Guidelines5/5

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

Explicitly states 'R1 builds NEW projects only' and notes 'Docking into an existing project and exact device selection are R2', giving clear when-not-to-use guidance. It also explains the dry-run default and the conditions for writing files, so an agent knows exactly when to invoke it.

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

decompose_deviceA

Expand a device into its group-address decomposition recipe.

A KNX actuator channel is not one GA — it expands into command/status/dimming/ position/mode objects, each with its DPT. Given a device order number, type or alias (e.g. 'ZIO-MB24', 'dimmer', 'JRA/S', 'presence detector') and a channel count, returns the objects a professional wires per channel and the total GA count. Use when turning a spec/ТЗ device list into a group-address structure.

ParametersJSON Schema
NameRequiredDescriptionDefault
channelsNo
order_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description must disclose behavioral traits. It explains that the tool returns objects per channel and total GA count, but does not mention side effects, prerequisites, or whether it is read-only. This is adequate but not comprehensive.

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

Conciseness5/5

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

The description is concise (4 sentences), front-loaded with the main purpose, and each sentence adds value. No redundant information.

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

Completeness4/5

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

Given the tool's complexity and the presence of an output schema, the description covers input, output, and usage context. It could be improved by mentioning error handling or behavior when the order_number is not found.

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?

With 0% schema description coverage, the description adds significant meaning by explaining that 'order_number' can be a type or alias and that 'channels' defaults to 1. This compensates for the lack of schema-level documentation.

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

Purpose5/5

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

The description clearly states the tool expands a device into its group-address decomposition recipe, with specific verbs and resource. It provides examples of inputs and output, and the purpose is distinct from sibling tools.

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

Usage Guidelines4/5

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

The description provides clear context for when to use the tool (turning a spec device list into a group-address structure), but does not explicitly mention when not to use it or provide alternative tools.

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

diff_projectsA

Semantic diff between two .knxproj files (path_a = base/old, path_b = new): added / removed GAs, DPT changes, renames, security-flag changes. Read-only.

ParametersJSON Schema
NameRequiredDescriptionDefault
path_aYes
path_bYes
password_aNo
password_bNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the tool is read-only and performs a diff of specified aspects. However, it does not describe behavior like error handling, password usage, or performance implications. Still, it provides a good overview of what the tool does.

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

Conciseness5/5

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

The description is a single, well-structured sentence that immediately conveys the tool's purpose. It is front-loaded with the key concept ('Semantic diff') and lists specifics concisely. No unnecessary words.

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

Completeness4/5

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

Given the presence of an output schema (not shown), the description does not need to detail return values. It adequately explains the tool's role within the set of sibling tools. A brief mention of output type or the meaning of 'diff' could enhance completeness.

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?

The description adds meaning for path_a and path_b by clarifying their roles as base/old and new, which the schema does not specify. However, password_a and password_b are not explained, though they are optional and likely self-explanatory. Given 0% schema coverage, the description partially compensates.

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

Purpose5/5

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

The description clearly states it performs a semantic diff between two .knxproj files, specifying the exact aspects compared (added/removed GAs, DPT changes, renames, security-flag changes). This differentiates it from sibling tools like analyze_all or check_* tools, which have different scopes.

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 description implies usage context (comparing two project files) but does not explicitly state when to use this tool versus alternatives. There is no mention of when it should not be used or any exclusions. The 'Read-only' hint is useful but not a usage guideline.

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

explain_gaA

Provenance for one group address — why the tool classified it the way it did. Replays the classification and shows, per decision (category / kind / status pairing), the signals that fired with a confidence tier: authoritative (an ETS Function role) > structural (the KNX DPT) > heuristic (a name keyword). Flags conflicts (e.g. a GA the DPT calls lighting while its name says "AC") — the hotspot for silent misclassification. Read-only; use before trusting a category or generating an entity.

ParametersJSON Schema
NameRequiredDescriptionDefault
addressYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and succeeds. It discloses that the tool is read-only, replays classification, outputs per-decision signals with confidence tiers, and flags conflicts. It also explains the confidence ordering (authoritative > structural > heuristic). No contradictions.

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

Conciseness5/5

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

The description is a compact paragraph of about five sentences, front-loaded with the core purpose ('Provenance for one group address'). It then details the replay mechanism, confidence tiers, conflict flagging, and usage context. Every sentence adds value with no fluff.

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?

Despite the tool's moderate complexity (replaying classification logic), the description covers the purpose, output structure (decisions, signals, confidence tiers), conflict behavior, and usage guidance. An output schema exists (though not shown), so return format is presumably defined there. The description is sufficient for an agent to decide when and how to call it.

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% and the description is the only source. It clarifies that the 'address' parameter is a group address ('one group address'), which is essential context. While it doesn't specify format examples, the singular required parameter's meaning is well conveyed by the description.

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

Purpose5/5

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

The description states a specific verb and resource: 'Provenance for one group address — why the tool classified it the way it did.' It clearly explains the function (replaying classification and showing signals with confidence tiers) and distinguishes it from siblings like check_naming or suggest_repairs by focusing on explanation rather than checking or fixing.

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

Usage Guidelines4/5

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

The description gives explicit when-to-use guidance: 'use before trusting a category or generating an entity.' It also implies a single-address scope and mentions conflict detection as a hotspot for misclassification. However, it does not name alternative tools or state when NOT to use it, so it lacks explicit exclusions.

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

generate_ets_group_addressesA

Generate an ETS-importable Group Address export.

Args:
    fmt: 'xml' (ga-export/01, recommended) or 'csv' (native ETS layout).
    output_path: optional file inside the workspace.
ParametersJSON Schema
NameRequiredDescriptionDefault
fmtNoxml
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior2/5

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

Without annotations, the description fails to disclose critical behavioral traits such as whether the tool modifies any state, requires specific prerequisites (e.g., loaded project), or what happens if output_path already exists (overwrite? error?). It only mentions file creation obliquely.

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

Conciseness5/5

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

The description is extremely concise, front-loading the primary function in the first sentence, and then listing the arguments with brief explanations. Every sentence adds value without redundancy.

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

Completeness4/5

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

For a tool with two simple parameters and an existing output schema, the description is largely complete. However, it omits prerequisites (e.g., project must be loaded) and does not clarify the workspace concept, which is necessary for correct invocation.

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?

Given 0% schema description coverage, the description compensates well by explaining the two parameters: fmt (with values and recommendation), output_path (optional file). This adds meaning that the schema alone does not provide. However, it could further clarify the workspace context and file overwrite behavior.

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

Purpose5/5

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

The description clearly states it generates an ETS-importable Group Address export, specifying the two output formats (xml and csv), which distinguishes it from sibling tools like list_group_addresses and generate_ha_package.

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 is provided on when to use this tool versus alternatives such as list_group_addresses or generate_ha_package. The description only mentions fmt options without contextualizing the tool's role.

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

generate_handover_packA

Generate a project handover pack (as-built deliverable for commissioning).

Assembles an equipment inventory, group-address map by domain, command/status
coverage, KNX Secure scope and QA state into ``handover.md``, plus a
``topology.svg`` diagram, the full ``group-addresses.csv`` and the
``ha-package.yaml``. When ``output_dir`` is given (a folder inside the
workspace) all files are written there and the paths returned; otherwise the
handover markdown + SVG are returned inline.
ParametersJSON Schema
NameRequiredDescriptionDefault
output_dirNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description fully shoulders behavioral disclosure. It explains conditional behavior based on 'output_dir' and lists generated files. However, it omits details like permission requirements or potential side effects, which would elevate it to a 5.

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?

The description is a single paragraph that front-loads the purpose and uses efficient phrasing. It is concise but not overly terse; it could be slightly shorter by removing redundant phrases while retaining clarity.

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

Completeness4/5

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

Given the tool has one simple parameter and an output schema exists, the description covers the core behavior adequately. It explains both modes of output and lists all produced files, meeting completeness needs for this simple tool.

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?

Despite 0% schema description coverage, the description thoroughly explains the lone parameter 'output_dir', including its effect on output routing. This compensates well for the schema gap, though it doesn't specify exact path format.

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

Purpose5/5

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

The description clearly states it generates a project handover pack, listing specific deliverables (handover.md, topology.svg, etc.). It uses the verb 'Generate' and specifies the resource, distinguishing it from sibling tools like 'generate_ets_group_addresses' which focus on single artifacts.

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 description implies usage for project completion via 'as-built deliverable for commissioning', but does not explicitly state when to use this tool over alternatives or when not to use it. No exclusions or comparisons to sibling tools are provided.

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

generate_ha_packageA

Generate a Home Assistant KNX package YAML.

If output_path is given, the YAML is written into the workspace and the path
returned; otherwise the YAML text is returned inline.
ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior3/5

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

Describes two modes (file write vs inline return) but lacks details on file overwrite behavior or potential side effects. No annotations to contradict.

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

Conciseness5/5

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

Two clear, front-loaded sentences with no wasted words. Efficiently communicates purpose and conditional behavior.

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

Completeness4/5

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

Covers main functionality for a simple tool with one optional param and output schema. Lacks mention of error handling or file overwrite policy, but remains adequate.

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?

Only one parameter (output_path). Schema has no description, but the description adds crucial behavioral context: if provided, write to workspace; otherwise inline. This compensates for schema coverage of 0%.

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?

Description clearly states it generates a Home Assistant KNX package YAML, with two modes based on output_path. This distinguishes it from siblings like analyze_all or get_topology.

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?

Explicitly describes when to use each mode (with/without output_path). Does not mention alternatives or when not to use, but the context is sufficient for selection.

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

generate_knx_iotB

Export a KNX IoT semantic view (Turtle/RDF) of the project's functional datapoints — a pragmatic skeleton for the IP-native model, for review.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/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 full behavioral disclosure burden. It only states the output format and purpose (skeleton for review), but does not disclose whether the operation is read-only, requires authentication, or has other behavioral traits.

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?

The description is a single sentence, concise and front-loaded with the action. However, it could be structured to better separate purpose, usage, and parameter details.

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?

Given the presence of an output schema, return values need not be explained. However, the description lacks context about what 'functional datapoints' are and how the output relates to other tools, making it minimally adequate for a simple export tool.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description does not explain the only parameter (output_path) beyond what the schema provides. It neither describes its effect nor suggests typical values, leaving an agent with no semantic guidance.

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

Purpose5/5

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

The description clearly states the tool exports a KNX IoT semantic view in Turtle/RDF format for review. It specifies the verb 'Export', the resource 'functional datapoints', and the output format, distinguishing it from sibling export tools like generate_ets_group_addresses.

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 description implies usage for review purposes ('for review') but provides no explicit guidance on when to use this tool versus alternatives like generate_ets_group_addresses or generate_handover_pack. No exclusions or prerequisites are mentioned.

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

generate_test_protocolA

Draft a functional acceptance protocol (per function: command → expected status, pass/fail/sign-off) as Markdown. Execution is manual/on-site; this only drafts it.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries full burden. It correctly states the tool only drafts and doesn't execute, but fails to mention side effects like file creation or whether output_path saves the file. Behavior is partially transparent but lacks detail.

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

Conciseness5/5

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

Two sentences efficiently convey the tool's purpose, format, and execution context without extraneous information. Every word adds value.

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

Completeness4/5

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

For a simple tool with 1 optional parameter and an output schema, the description covers the core function and boundary. The missing parameter documentation is the only gap, so it's mostly complete.

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?

The sole parameter output_path has 0% schema description coverage and no explanation in the description. The agent cannot infer what this parameter does (e.g., output file path) from the description alone.

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

Purpose5/5

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

The description clearly states the tool drafts a functional acceptance protocol in Markdown format, specifying the structure (command → expected status, pass/fail/sign-off). It distinguishes itself from sibling tools like generate_handover_pack by focusing on test protocols.

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 description notes execution is manual/on-site and this tool only drafts the protocol, implying it's for planning not execution. However, it doesn't explicitly compare to alternatives or state when to use this over other tools.

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

get_devicesA

List devices (individual address, name, order number, manufacturer), sorted by individual address (area/line/device numerically). Same paging contract as list_group_addresses: next_cursor / total_matched / returned.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the sorting order (numerical by individual address), the paging contract (next_cursor/total_matched/returned), and the returned fields. This is valuable behavioral context beyond the schema, though it does not mention read-only nature explicitly or authentication/rate-limit details.

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

Conciseness5/5

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

Two tight sentences with no filler. The purpose is front-loaded, followed by sort order and paging contract. Every sentence carries substantive information.

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

Completeness4/5

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

Given an output schema exists, the description adequately covers the listing behavior, returned fields, and paging. It is sufficient to call the tool correctly, though it assumes familiarity with list_group_addresses for full cursor semantics. Minor gaps around read-only confirmation and potential limits do not prevent correct use.

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 that limit/cursor follow the same paging contract as list_group_addresses, giving context that cursor is a pagination token and limit controls page size. However, it does not explicitly define each parameter, relying on the sibling tool's contract.

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

Purpose5/5

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

The description states a specific verb ('List') and resource ('devices'), enumerates the returned fields, and specifies the sort order. It also references a sibling tool for the paging contract, which helps an agent distinguish it from related tools like list_group_addresses.

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 purpose implies when to use this tool (when a list of devices is needed), but there is no explicit guidance on when not to use it or which alternative to prefer. The reference to list_group_addresses is about paging behavior, not tool selection, so usage context is only implied.

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

get_topologyB

Return the area/line/device topology tree.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/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 full burden. It does not disclose any behavioral traits such as read-only nature, performance considerations, or side effects, only stating the return action.

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?

The description is a single sentence of 6 words, highly concise. However, it could be slightly more informative while remaining concise, but it earns its place.

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?

Given no parameters and an output schema exists, the description is minimally adequate. However, it does not clarify what 'topology tree' entails or how to interpret results, leaving gaps for a new user.

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?

There are zero parameters, so baseline 4 applies. The description correctly implies no parameters are needed, and schema coverage is 100%, so no additional clarification is required.

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

Purpose5/5

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

The description uses the specific verb 'Return' and identifies the resource as 'area/line/device topology tree', clearly stating what the tool does. It distinguishes from sibling tools like 'analyze_all' or 'get_devices' which have different purposes.

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 use this tool versus alternatives, nor any exclusions or prerequisites. The description lacks context for appropriate usage.

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

grade_completenessA

Grade the project: bare functional skeleton vs as-built grade — by the presence of the professional patterns (central macros, device tuning, astro/meteo, monitoring, deep metering, scenes, reserves, a debug main).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/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 burden. It mentions grading logic and criteria but does not disclose if the tool is read-only, has side effects, or requires specific permissions. The output schema exists but the description does not hint at output structure.

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?

The description is a single sentence that clearly states the purpose and criteria. It could be slightly more structured (e.g., bullet list of patterns) but it is efficient and front-loads the verb and resource.

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

Completeness4/5

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

The tool has no parameters and an output schema exists, so the description need not detail return values. It explains the grading criteria adequately, though it could mention the scale better. Given the context, it is reasonably complete.

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?

There are zero parameters, so baseline is 4 per rubric. The description adds no parameter info, which is acceptable since no parameters exist.

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

Purpose5/5

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

The description uses a specific verb ('Grade') and resource ('project') with a clear scale ('bare functional skeleton vs as-built grade') and lists the professional patterns used as criteria. This distinguishes it from sibling tools like 'analyze_all' or 'check_*' which focus on different aspects.

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 does not specify when to use this tool versus the many siblings (e.g., when to use 'grade_completeness' vs 'analyze_all' or 'project_report'). No when-not-to-use or alternative guidance is provided.

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

list_device_recipesA

List the device decomposition recipes in the built-in device library.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

The description clearly indicates a read-only listing operation with no side effects. However, since no annotations are provided, the description carries the full burden; it could additionally state idempotency or that it does not mutate state, but the current description is transparent enough.

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

Conciseness5/5

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

The description is a single sentence with no superfluous words. It is front-loaded and efficient, earning its place without any padding.

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?

Given the tool has no parameters, an output schema exists (though not described), and the operation is simple listing, the description is complete. It provides all necessary information for an agent to understand the tool's purpose.

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?

The tool has zero parameters, so the schema coverage is 100% trivially. The description does not need to add parameter details. Baseline score of 4 is appropriate as it fully covers the semantic 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?

The description clearly states the verb 'list', the resource 'device decomposition recipes', and the scope 'built-in device library'. This specifically distinguishes from sibling tools like 'decompose_device' (which applies a recipe) and 'get_devices' (which lists devices).

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 description implies usage as a simple listing operation, but it does not provide any explicit guidance on when to use it, when not to use it, or mention alternatives. For a straightforward tool, this is adequate but not fully instructive.

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

list_group_addressesA

List parsed group addresses with classification, in a stable order.

Filters: category (lighting/shutter/hvac/sensor/scene/energy/diagnostics),
kind (command/status/sensor), missing_dpt_only.

Paging: results are always sorted by the group address itself (main/middle/sub
numerically, free-style addresses numerically, anything else lexically), so the
order does not depend on how the project happened to parse and a retry returns
the same page. Pass the returned `next_cursor` back as `cursor` for the next
page; `next_cursor` is null on the last page. `total_matched` reports how many
addresses match the filters, so a truncated answer is never silent.
ParametersJSON Schema
NameRequiredDescriptionDefault
kindNo
limitNo
cursorNo
categoryNo
missing_dpt_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

There are no annotations, so the description carries the full behavioral burden. It goes well beyond the minimum by disclosing stable ordering rules, exact sort behavior per address type, cursor handling, the meaning of next_cursor and total_matched, and the fact that truncation is never silent. This is rich, concrete, and directly useful for correct invocation and result interpretation.

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

Conciseness5/5

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

The description is well organized: a one-line purpose, a compact filter list, and a focused paging paragraph. Every sentence carries useful information, and the most important differentiation (stable order) is front-loaded. The length is justified by the behavioral details provided.

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?

For a filtered-list tool with an output schema and no annotations, the description is complete: it explains filtering, ordering, paging, cursor lifecycle, and non-silent truncation. Nothing necessary for an agent to call or interpret the tool 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?

The input schema has 0% description coverage, so the description must compensate. It explicitly enumerates accepted values for category and kind, explains cursor semantics via next_cursor, and clarifies missing_dpt_only as a filter. The meaning of limit is not elaborated, but its default and the paging context make it adequately inferable. This is strong compensation, though not exhaustive.

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

Purpose5/5

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

The description uses a specific verb and resource: 'List parsed group addresses with classification'. It immediately conveys the main output and the stable-order guarantee, which clearly distinguishes this tool from siblings like generate_ets_group_addresses or get_devices. The purpose is unambiguous and actionable.

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

Usage Guidelines4/5

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

The description clearly establishes when to use this tool: to list group addresses with filtering by category, kind, or missing DPT, and to page through results. It does not explicitly name alternatives or say when not to use it, but the filter and paging context is clear enough for an agent to select it appropriately.

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

load_ga_exportA

Load an ETS group-address export (ga-export/01 XML) instead of a full .knxproj.

For when you only have the GA list: an ETS "Export Group Addresses" file, or the
ETS import file a planning tool produces (TapPlan and similar). Names, addresses,
DPTs, descriptions, the security flag and the range tree are read; the result
replaces the loaded project for every other tool.

Works: check_naming, check_missing_status, check_dpt, check_policy, check_secure,
analyze_all, suggest_repairs, project_report, generate_ha_package,
generate_ets_group_addresses. Nothing to read (the export has no devices, ETS
Functions or topology): get_devices, get_topology, check_topology,
decompose_device, check_device_parameters, parse_devices_from_project. Pairing
relies on names only, since there are no ETS Function roles.

Args:
    path: Path to the exported .xml file.
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden and meets it: it discloses the state-changing side effect ('the result replaces the loaded project for every other tool'), the data that is extracted, the absence of devices/functions/topology, and the name-only pairing limitation. These are exactly the behavioral traits an agent must know before calling a load tool.

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?

The description is long, but it is cleanly organized into purpose, usage trigger, data content, effect, tool-compatibility matrix, and caveat paragraphs, with the core purpose front-loaded. The tool-name lists are bulky but carry real routing value for an agent deciding which tool to pair with this loader.

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?

For a one-parameter loader with an output schema, nothing essential is missing: the return contract is left to the output schema, while the description covers purpose, side effects, compatibility, and limitations. The only conceivable addition would be explicitly naming load_project as the alternative, but the contrast is already clear from 'instead of a full .knxproj.'

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?

The single parameter has zero schema description coverage, so the description must compensate. The Args section states 'path: Path to the exported .xml file,' which together with the main description's 'ga-export/01 XML' context conveys the file type and purpose. It is adequate but adds little beyond that basic meaning.

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

Purpose5/5

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

The opening sentence states a specific verb and resource: 'Load an ETS group-address export (ga-export/01 XML) instead of a full .knxproj.' It signals that this is the GA-only counterpart to the full-project load, distinguishing it from the sibling load_project, and enumerates exactly what is read (names, addresses, DPTs, descriptions, security flag, range tree).

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

Usage Guidelines5/5

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

Gives the explicit trigger condition ('For when you only have the GA list') and names the exact accepted file types (ETS 'Export Group Addresses' file, TapPlan-like planning imports). It goes further than most definitions by enumerating which downstream tools work after loading and which have 'nothing to read,' plus the pairing-relies-on-names caveat.

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

load_projectA

Parse a .knxproj file (read-only) and cache it for the session.

Args:
    path: Path to the .knxproj file.
    password: Project password, if the .knxproj is protected.
    language: Optional language code (e.g. 'de-DE', 'ru-RU').
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
languageNo
passwordNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

No annotations provided, but description discloses read-only nature, caching behavior, and optional password/language parameters. Does not detail error handling or file format expectations.

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

Conciseness5/5

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

Single-line purpose followed by concise Args list. No redundant or missing information.

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

Completeness4/5

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

Given output schema exists, description covers main function, caching, and parameter details. Could mention that tool should be called before others, but implied by sibling names.

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

Parameters5/5

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

With 0% schema description coverage, description fully explains all three parameters: path, password (with conditional), and language (with examples). Adds value beyond schema types.

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?

Description clearly states verb 'parse' and resource '.knxproj file', with read-only and session caching scope. Distinguishes from sibling tools which operate on loaded data.

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?

Implicitly foundational for other project tools, but no explicit when-to-use, when-not-to-use, or alternatives beyond sibling list.

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

parse_devices_from_projectA

Extract exact device object models from a .knxproj / .knxprod application programs.

Reads the manufacturer application programs (M-*) embedded in an ETS `.knxproj`
(devices actually used) or a `.knxprod` product database, and returns each device's
order number, app-program version, object counts and detected per-channel blocks —
the EXACT vendor comm-object model, not a generic recipe. Read-only and PII-safe: it
reads only vendor catalog data, never the client project (P-*/0.xml).

Use this to build/grow the local device catalog that `decompose_device` consumes
(set NICKOL_KNX_CATALOG to the catalog dir). If `output_path` is given, the full
catalog is written into the workspace as device-library YAML; the return value is
always a compact per-device summary + coverage manifest (the full object lists are
not inlined). DPT `unverified` = the vendor app-program declares none (never guessed).
ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
passwordNo
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior5/5

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

With no annotations, the description fully discloses behavior: read-only, PII-safe, reads only vendor data, never client project. It explains what 'unverified' DPT means and that the return value is a summary not full object lists. No contradictions.

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?

Single paragraph is efficient and front-loaded with purpose, but somewhat lengthy. Every sentence adds value, though could be structured with bullet points for readability.

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

Completeness4/5

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

Given 3 parameters, no annotations, and output schema exists, the description covers purpose, usage, return value summary, and limitations. Lacks details on error cases or prerequisites but is largely complete.

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 description must compensate. It indirectly explains path (file type) and output_path (catalog writing), but password parameter is not explained. Adds value beyond schema but could be more complete.

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

Purpose5/5

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

The description clearly states it extracts exact device object models from .knxproj/.knxprod files, specifying the resource (vendor application programs) and action (extract). It distinguishes from siblings by contrasting with 'generic recipe' and noting it reads only vendor catalog data, not client projects.

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

Usage Guidelines5/5

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

Explicitly states when to use: to build the local device catalog for decompose_device, and mentions setting NICKOL_KNX_CATALOG. Also explains behavior with output_path and the return value format, providing clear context for usage.

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

project_reportC

Produce the human-readable Markdown report (review before any import).

ParametersJSON Schema
NameRequiredDescriptionDefault
name_regexNo
output_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It only mentions 'produce' (implying read-only) but lacks details on side effects, required inputs, or response behavior. The output schema exists but is not referenced.

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

Conciseness3/5

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

A single sentence that is concise and front-loaded with purpose. However, it omits important information about parameters and usage, reducing its effectiveness.

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?

Despite having an output schema, the description fails to cover parameter behavior, usage context, or behavioral traits. Two parameters remain unexplained, and the tool's role among siblings is unclear.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention either parameter (name_regex, output_path). No guidance on their purpose or usage, leaving the agent uninformed.

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 clearly states it produces a human-readable Markdown report, with a specific hint about reviewing before import. However, it does not explicitly differentiate from sibling tools like analyze_all or check_*, which may also generate reports.

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 explicit guidance on when to use this tool versus siblings. The phrase 'review before any import' implies a specific context but does not outline alternatives or exclusion criteria.

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

suggest_namesB

Naming hygiene suggestions (empty names, status GAs missing a status keyword).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so description bears full burden. It does not disclose whether the tool is read-only, requires authorization, or has side effects. The description only states purpose, not behavior.

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

Conciseness5/5

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

Single sentence with clear parenthetical example. No wasted words; front-loaded with purpose.

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?

Tool has no parameters and has an output schema, so description need not detail returns. However, more context about what kind of suggestions or output format would improve completeness. Adequate but minimal.

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 coverage is 100% with zero parameters, so baseline is 3. Description adds no parameter-specific info because there are none, but also no omission.

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 clearly states the tool provides naming hygiene suggestions for empty names and status GAs missing a status keyword. The verb 'suggest' and specific resources are identified, distinguishing it from sibling tools like check_naming or grade_completeness.

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 tool versus alternatives. The description does not mention prerequisites, typical use cases, or when not to use it.

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

suggest_repairsA

Propose concrete fixes for the project's findings — repair, don't just flag.

For each issue it suggests a reviewable fix: infer a DPT for a GA that has none,
correct a suspect sub-DPT, synthesise a status/feedback GA in a free address slot,
or add an absolute-brightness GA for a relative-only dimmer. Suggestions only —
a human reviews them; accepted new GAs feed generate_ets_group_addresses. The
server never writes to ETS or the bus.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

The description discloses key behavioral traits: 'The server never writes to ETS or the bus,' ensuring agents know this is a non-destructive suggestion tool. It also clarifies that suggestions are reviewable, not automatic. Without annotations, this level of disclosure is commendable.

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

Conciseness5/5

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

The description is concise and well-structured. The first sentence immediately conveys the core purpose. The second paragraph provides concrete examples and workflow context without unnecessary verbosity. Every sentence adds value.

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

Completeness4/5

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

Given the tool has no parameters and an output schema exists (though not detailed here), the description sufficiently covers behavior, workflow integration with generate_ets_group_addresses, and non-destructive nature. It could mention output format briefly, but the presence of an output schema mitigates this.

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?

The input schema has zero parameters, so the description does not need to elaborate on parameters. It adds value by explaining the tool's operation and what it accomplishes, compensating for the lack of parameter details. The schema coverage is 100%.

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

Purpose5/5

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

The description clearly states the tool's function: 'Propose concrete fixes for the project's findings — repair, don't just flag.' It provides specific examples of fixes (infer DPT, correct sub-DPT, etc.) and distinguishes itself from sibling tools by noting that suggestions feed into generate_ets_group_addresses and that the server never writes to ETS or the bus.

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

Usage Guidelines4/5

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

The description indicates when to use the tool (for concrete fixes based on project findings) and provides workflow context: 'Suggestions only — a human reviews them; accepted new GAs feed into generate_ets_group_addresses.' It does not explicitly list alternatives, but the context implies appropriate usage.

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

validate_room_templateA

Validate a Room Library template against the R1 schema (report-only).

Pass ``template`` (a built-in template's semantic slot_id, e.g. 'bedroom',
'kitchen') or ``path`` to a custom template YAML. Checks the public contract:
a locale-neutral slot_id, ru/en labels, per-slot basic/comfort presets, known
function types, valid multiplicities, and that ``area_m2`` is a hint with
provenance (never a normative fact). Returns ok + findings; nothing is written.
ParametersJSON Schema
NameRequiredDescriptionDefault
pathNo
templateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explicitly states report-only, that nothing is written, and that results are ok + findings. It also reveals the nuanced policy that area_m2 is a hint with provenance, not a normative fact.

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

Conciseness5/5

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

The description is front-loaded with the core purpose, then organizes parameter usage and validation details into a compact, readable list. Every sentence adds distinct value with no repetition or filler.

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?

Even without annotations, the description covers purpose, parameter semantics, side-effect behavior, and return shape (ok + findings). Since an output schema exists, return details need not be spelled out further. The tool call can be understood and invoked correctly from this description alone.

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

Parameters5/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 fully. It does so by explaining both parameters: template is a built-in slot_id with examples like 'bedroom'/'kitchen', and path points to a custom template YAML. It also clarifies the or-relationship between them.

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

Purpose5/5

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

The description names a specific verb and resource: validate a Room Library template against the R1 schema. It also distinguishes itself from sibling check_* tools by declaring report-only behavior and focusing on template contract checks.

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

Usage Guidelines4/5

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

The description clearly communicates the context of use: validating either a built-in template by slot_id or a custom YAML by path. It does not explicitly name alternatives or state when not to use the tool, but the narrow template-validation scope makes the intended usage plain.

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

workspace_infoB

Show the confined output workspace and the safety guarantees.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations, the description carries full burden. It states the tool shows information, implying a read-only operation, but provides no details on outcome, side effects, or necessary permissions. Minimal disclosure beyond the basic action.

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

Conciseness5/5

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

The description is a single sentence of 9 words, with no redundant information. Every word serves a purpose, making it highly concise and front-loaded.

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

Completeness4/5

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

Given an output schema exists (presumably documenting return values), the description adequately covers the tool's function for a simple info tool. It could be slightly more explicit about what 'confined output workspace' means, but overall complete.

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?

There are zero parameters, so the baseline is 4. The description does not need to add parameter meaning, and the schema coverage is 100% by default.

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 uses a specific verb 'Show' and identifies the resource ('confined output workspace' and 'safety guarantees'), which clearly indicates the tool's purpose. It is distinct from sibling tools that perform analysis or checks. However, the term 'confined' may be unclear to some users.

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 tool versus alternatives. The description does not provide context or suggest scenarios, leaving the agent to infer usage 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. 9 tool updatesv0.8.2
    • Addedcheck_device_parameters
    • Addedcheck_policy
    • Addedcheck_topology
    • Addedcompose_rooms
    • Addedexplain_ga
    • Changedget_devices6 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Cursor"
        +}
      • addedInput schema / properties / limit
        Added value: +{
        +  "default": 500,
        +  "title": "Limit",
        +  "type": "integer"
        +}
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "title": "Result",
        -    "type": "array"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"get_devicesOutput"New value: +"get_devicesDictOutput"
    • Changedlist_group_addresses5 fields changed
      • addedInput schema / properties / cursor
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Cursor"
        +}
      • addedOutput schema / additionalProperties
        Added value: +true
      • removedOutput schema / properties
        Removed value: -{
        -  "result": {
        -    "items": {
        -      "additionalProperties": true,
        -      "type": "object"
        -    },
        -    "title": "Result",
        -    "type": "array"
        -  }
        -}
      • removedOutput schema / required
        Removed value: -[
        -  "result"
        -]
      • changedOutput schema / title
        Previous value: -"list_group_addressesOutput"New value: +"list_group_addressesDictOutput"
    • Addedload_ga_export
    • Addedvalidate_room_template
  2. 13 tool updatesv0.2.2
    • Addedcheck_energy
    • Addedcheck_matter
    • Addedcheck_secure
    • Addeddecompose_device
    • Addeddiff_projects
    • Addedgenerate_handover_pack
    • Addedgenerate_knx_iot
    • Addedgenerate_test_protocol
    • Addedgrade_completeness
    • Addedlist_device_recipes
    • Addedparse_devices_from_project
    • Addedsuggest_names
    • Addedsuggest_repairs
  3. 12 tool updatesv0.1.0
    • First observedanalyze_all
    • First observedcheck_dpt
    • First observedcheck_missing_status
    • First observedcheck_naming
    • First observedgenerate_ets_group_addresses
    • First observedgenerate_ha_package
    • First observedget_devices
    • First observedget_topology
    • First observedlist_group_addresses
    • First observedload_project
    • First observedproject_report
    • First observedworkspace_info

TDQS

B3.4/5.0

Scored across 32 tools

Disambiguation4/5

Tools are largely distinct due to consistent prefixes (check_*, generate_*, list_*, get_*) and targeted domains. Minor overlap exists (e.g., check_naming vs. suggest_names, analyze_all vs. project_report), but descriptions clarify boundaries.

Naming Consistency4/5

Most names follow a verb_noun pattern with strong category prefixes. A few irregular names (analyze_all, project_report, workspace_info) break the pattern, but the overall style is predictable and readable.

Tool Count2/5

32 tools is a large surface, well above the typical 3-15 range. While each tool appears justified, the count feels heavy and could be consolidated (e.g., parameterized check/generate tools), increasing cognitive load for agents.

Completeness4/5

The toolset covers the full KNX workflow: project loading, multiple analysis/check dimensions, report generation, exports, room composition, and device decomposition. Minor gaps exist (no direct write/apply fixes, no update/delete operations), but these are intentional design constraints.

Maintenance

ActivityActive
ResponsivenessResponsive

Related MCP Connectors

Related MCP Servers

  • -
    license
    Not graded
    quality
    Not graded
    maintenance
    Enables automated project analysis and structured development specification generation. Supports multiple export formats and integrates with AI models for comprehensive project documentation and validation.
    -
  • A
    license
    A
    quality
    A
    maintenance
    Local electronics tools for MCP-capable assistants, enabling static analysis of CRUMB save files and Logisim-evolution projects, including net tracing, BOM building, electrical rule checks, and optional truth table generation.
    22
    79 npm
    1
    Apache 2.0
  • F
    license
    A
    quality
    A
    maintenance
    Provides read-only analysis of Mitsubishi GX Works3 PLC projects via MCP, enabling device tracing, cross-referencing, ladder inspection, linting, and report generation without modifying source projects.
    4
    15
    7
    -