Skip to main content
Glama
RAEN-DT

PyNet Bridge

by RAEN-DT

🐍 PyNet Platform Bridge (MCP)

PyNet Platform Bridge (MCP) ist die Ausführungsschicht, die es KI-Modellen ermöglicht, Autodesk-Tools in Echtzeit zu steuern.

Sie verbindet natürliche Sprache → Python → Autodesk-Desktop-Tools (Navisworks, Revit, AutoCAD) und ermöglicht es der KI, BIM-Workflows autonom zu generieren, auszuführen und zu verfeinern.

Zu den verfügbaren Integrationen gehören Navisworks Manage, Revit und AutoCAD.

Diese Bridge fungiert als Bindeglied zwischen KI-Logik und Autodesk-Desktop-APIs und ermöglicht die dynamische Erstellung von Benutzeroberflächen, die Ausführung von Skripten und die Automatisierung von BIM-Prozessen mithilfe natürlicher Sprache.

🔄 Funktionsweise

  1. Der Benutzer beschreibt eine Aufgabe in natürlicher Sprache.

  2. Die KI generiert ein Python-Skript.

  3. PyNet Bridge validiert und sendet das Skript.

  4. Das PyNet-Plugin führt es innerhalb von Autodesk aus.

  5. Die Ergebnisse werden an die KI zurückgegeben.

Dies macht aus einer KI von einem Chatbot zu einer Ausführungs-Engine für BIM.


Related MCP server: A2A MCP Server

🚀 Was PyNet Bridge so leistungsstark macht

  • KI → Aktion: Verwandelt KI-generierten Code in echte Aktionen innerhalb von Navisworks/Revit

  • Echtzeit-Ausführung: Skripte sofort ausführen, ohne die BIM-Umgebung zu verlassen

  • Dynamische UI-Erstellung: Lassen Sie die KI Tools, Schaltflächen und Workflows im laufenden Betrieb erstellen

  • Zuverlässige Kommunikation: Schnelle und stabile lokale IPC

  • Modellbewusste Automatisierung: Arbeitet direkt an Live-BIM-Modellen


🛠️ Installation

✅ Option A — Automatischer Installer (empfohlen)

Öffnen Sie PowerShell und führen Sie Folgendes aus:

irm https://raw.githubusercontent.com/rafa2403nunez-droid/PyNetBridge/main/install.ps1 | iex

Dies führt automatisch folgende Schritte aus:

  1. Überprüfung, ob Python 3.10+ installiert ist

  2. Installation von pynet-mcp-bridge von PyPI (via uv oder pip)

  3. Automatische Erkennung und Konfiguration aller installierten KI-Clients:

    • Claude Desktop (Standard- und Microsoft Store-Versionen)

    • Claude Code (VS Code-Erweiterung / CLI)

    • Cline (VS Code-Erweiterung)

    • Roo Code (VS Code-Erweiterung)

Das Paket pynet-mcp-bridge enthält:

Paket

Zweck

pynet-mcp-bridge

MCP-Server, der KI-Modelle mit Autodesk Navisworks über PyNET verbindet

mcp[cli]

Model Context Protocol SDK und CLI-Tools

fastmcp

High-Level MCP-Server-Framework

psutil

Systemprozesserkennung (findet laufende Autodesk-Instanzen)

Starten Sie Ihre KI-Client(s) nach der Installation neu, um die Änderungen anzuwenden.

📦 Python Libraries Starter Pack (optional)

Installieren Sie die empfohlenen Python-Bibliotheken für Navisworks/Revit-Skripte mit PyNET:

irm https://raw.githubusercontent.com/rafa2403nunez-droid/PyNetBridge/main/install-libraries.ps1 | iex

Dies installiert:

Bibliothek

Zweck

pandas

Datenanalyse und -manipulation

plotly

Interaktive Diagramme und Visualisierungen

matplotlib

Statische Diagramme und Grafiken

dash

Web-Dashboards aus Python

Dies sind die Drittanbieter-Bibliotheken, die unter Allowed Python Imports aufgeführt sind. Standard-Bibliotheksmodule (json, sys, re usw.) sind bereits in Python enthalten.

Voraussetzungen

  • PyNet Platform-Plugin in Navisworks/Revit installiert.

  • Python 3.10 oder höher → python.org

    ⚠️ Python 3.14 wird noch nicht unterstützt. Die pythonnet-Laufzeitumgebung unterstützt derzeit Python 3.7 bis 3.13. Wenn Sie auf eine System.NotSupportedException stoßen, die eine nicht unterstützte ABI-Version erwähnt, installieren Sie Python 3.12 oder 3.13 und konfigurieren Sie PyNet für deren Verwendung.

  • uvdocs.astral.sh/uv

  • Gitgit-scm.com — erforderlich für das korrekte Funktionieren der VS Code-Erweiterungen (Claude Code, Cline, Roo Code).

  • Für Cline / Roo Code: VS Codecode.visualstudio.com


🔧 Option B — Manuelle Installation

1. Installieren Sie das Paket:

uv tool install pynet-mcp-bridge

Oder mit pip:

pip install pynet-mcp-bridge

2. Konfigurieren Sie Claude Desktop:

Fügen Sie Folgendes zu Ihrer claude_desktop_config.json hinzu:

  • Standard: %APPDATA%\Claude\claude_desktop_config.json

  • Microsoft Store: %LOCALAPPDATA%\Packages\Claude_*\LocalCache\Roaming\Claude\claude_desktop_config.json

{
  "mcpServers": {
    "pynet-bridge": {
      "command": "pynet-bridge",
      "args": []
    }
  }
}

3. Konfigurieren Sie Claude Code (VS Code-Erweiterung):

Fügen Sie dies zu %USERPROFILE%\.claude.json hinzu:

{
  "mcpServers": {
    "pynet-bridge": {
      "type": "stdio",
      "command": "pynet-bridge",
      "args": []
    }
  }
}

4. Konfigurieren Sie Cline:

Fügen Sie dies zu %APPDATA%\Code\User\globalStorage\saoudrizwan.claude-dev\settings\cline_mcp_settings.json hinzu:

{
  "mcpServers": {
    "pynet-bridge": {
      "type": "stdio",
      "command": "pynet-bridge",
      "args": []
    }
  }
}

5. Konfigurieren Sie Roo Code:

Fügen Sie dies zu %APPDATA%\Code\User\globalStorage\rooveterinaryinc.roo-cline\settings\mcp_settings.json hinzu:

{
  "mcpServers": {
    "pynet-bridge": {
      "type": "stdio",
      "command": "pynet-bridge",
      "args": []
    }
  }
}

🛠️ Verfügbare MCP-Tools

Diese Tools ermöglichen es der KI, die PyNet-Umgebung vollständig zu steuern, von der UI-Erstellung bis zur Skriptausführung und Systemüberwachung. Sobald die Verbindung hergestellt ist, hat die KI Zugriff auf die gesamte Suite der PyNet-Tools:

🧠 Der KI zugängliche Kernfunktionen

🔍 System & Verbindung

  • list_active_instances: Scannt das System nach laufenden Autodesk-Prozessen mit einer aktiven PyNet-Verbindung.

  • check_plugin_status: Handshake-Ping, um zu überprüfen, ob der Plugin-Listener reagiert.

🏗️ Modul- (Tab-) Verwaltung

  • get_pynet_ui_layout: Ruft die vollständige UI-Struktur ab (ButtonsModules und ScriptButtons).

  • create_pynet_module: Erstellt einen neuen benutzerdefinierten Tab (ButtonsModule) im Ribbon.

  • delete_pynet_module: Löscht ein Modul und alle seine Inhalte dauerhaft.

🔘 Schaltflächenverwaltung

  • get_buttons_data: Listet alle Skript-Schaltflächen für eine bestimmte Modul-ID auf.

  • deploy_script_button: Installiert eine neue ScriptButton in einem bestimmten Modul (Name, Skript, Icon, Tooltip).

  • update_script_button: Aktualisiert Metadaten für eine bestehende ScriptButton oder verschiebt sie in ein anderes Modul.

  • delete_script_button: Entfernt eine ScriptButton dauerhaft aus einem Modul per ID.

💻 Ausführung & Konsolensteuerung

  • send_command: Direkte Skriptausführung in der PyNet-Engine (Ziel-PID, Skriptname, Inhalt).

  • get_output_window_status: Überprüft, ob das Ausgabefenster derzeit verfügbar/sichtbar ist.

  • configure_output_window: Schaltet die Sichtbarkeit des PyNet-Protokoll-/Ausgabefensters um.


🛡️ Sichere KI-Ausführung

PyNet Bridge enthält eine integrierte Validierungsschicht, die sicherstellt, dass alle KI-generierten Skripte vor der Ausführung sicher und kontrolliert sind.

✔ Verhindert unsichere Operationen ✔ Blockiert unbefugten Systemzugriff ✔ Garantiert kontrollierte Interaktion mit BIM-Modellen

KI bleibt leistungsstark, aber innerhalb sicherer Grenzen

Ab v1.1.1 enthält der MCP-Server einen integrierten statischen Analysator, der jedes Skript validiert, bevor es den Autodesk-Host erreicht. Alle Skripte werden auf Bridge-Ebene geparst und überprüft — abgelehnte Skripte verlassen niemals den MCP-Server.

Zulässige CLR-Assemblies

Nur diese .NET-Referenzen sind über clr.AddReference zulässig:

  • Common: System, System.Windows.Forms, System.Drawing, System.Collections.Generic

  • Navisworks: Autodesk.Navisworks.Api, .ComApi, .Interop.ComApi, .Clash

  • Revit: RevitAPI, RevitAPIUI

  • AutoCAD / Civil 3D: AcMgd, AcCoreMgd, AcDbMgd, AecBaseMgd, AecPropDataMgd, AeccDbMgd

  • PyNet-Plugins: Raen.Core.Pynet.*, Raen.{Product}.Pynet.* (jede Version — z. B. Raen.Core.Pynet.Resources, Raen.Navisworks.Pynet.2024, Raen.Civil3D.Pynet.2026)

Zulässige Python-Importe

clr, sys, json, re, time, datetime, pathlib, typing, threading, collections, xml, pandas, plotly, matplotlib, dash, webbrowser, psutil, functools

Zulässige Python-Submodule

Einige Module sind nur auf Submodul-Ebene zulässig, um den Zugriff auf gefährliche Geschwister zu verhindern:

Zulässig

Blockiert

Grund

http.server

http.client, http.cookiejar

Lokales HTTP-Serving erlauben, ausgehende Anfragen blockieren

Blockierte Python-Importe

os, subprocess, shutil, socket, ctypes, pickle, importlib, urllib, signal, multiprocessing, tempfile, glob, inspect, code, codeop

Blockierte Aufrufe

eval, exec, compile, __import__, getattr, setattr, delattr, globals, locals, vars, breakpoint, open

Blockierter Attributzugriff

__builtins__, __subclasses__, __globals__, __code__

Jedes Skript, das gegen diese Regeln verstößt, wird sofort mit einer beschreibenden Fehlermeldung abgelehnt, ohne jemals an das Plugin gesendet zu werden.


📂 Projektstruktur

  • pynet_mcp/: Kern-MCP-Server-Logik (FastMCP).

  • pyproject.toml: Paketkonfiguration und Abhängigkeitsverwaltung.


📥 Erste Schritte

Beginnen Sie in wenigen Minuten mit der Erstellung autonomer BIM-Workflows.

Installieren Sie die Bridge, verbinden Sie Ihren KI-Client und verwandeln Sie natürliche Sprache in echte Aktionen innerhalb Ihrer Modelle.


❓ FAQs

Haben Sie Fragen zur Installation, Konfiguration oder Nutzung? Besuchen Sie die vollständige FAQ-Seite:

👉 PyNet FAQs


🔗 Wie dieses MCP in das Ökosystem passt

Dieses MCP ist Teil eines modularen Systems, das darauf ausgelegt ist, KI-gesteuerte BIM-Automatisierung über Autodesk-Tools hinweg zu ermöglichen.

Dieses Repository ist für die Zusammenarbeit mit folgenden Komponenten konzipiert:

  • PyNet Platform → Führt Skripte innerhalb von Navisworks, Revit & Civil 3D über Python.NET aus.

  • PyNet Library → Gibt der KI Kontext mit einer Bibliothek von Python-Skripten.

Zusammen ermöglichen diese Komponenten:

Natürliche Sprache → KI → Python-Skript → PyNet → Autodesk → BIM-Aktion

Komponente

Repository

Zweck

PyNet Platform

rafa2403nunez-droid/PyNet

Navisworks, Revit & Civil 3D Plugin — hostet die Python.NET-Engine

PyNet Bridge (MCP)

Dieses Repo

MCP-Server - verbindet KI-Modelle mit PyNET inklusive sicherer Skriptvalidierung

PyNet Library

rafa2403nunez-droid/PyNetLibrary

Skript-Referenzbibliothek und KI-Kontext

📄 Lizenz

Dieses Projekt ist unter der MIT-Lizenz lizenziert.


Available Tools

23 tools
check_plugin_statusB
Read-only

Handshake ping to verify the plugin listener is responsive.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description's 'handshake ping' adds mild behavioral context (non-destructive). However, it does not discuss rate limits or failure modes.

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 efficiently conveys the tool's essence without extraneous information.

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?

For a simple ping tool with an output schema, the description is too sparse. It fails to mention what the output indicates (success/failure) or error handling, leaving the agent underinformed.

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 provides no explanation of the 'pid' parameter. The agent cannot infer what the integer represents or how to use it.

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 is a 'handshake ping' to verify plugin listener responsiveness, which is a specific and distinct purpose. It distinguishes from sibling tools that perform other functions.

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 or when not to. Lacks mention of prerequisites or alternatives, leaving the agent without usage context.

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

configure_output_windowC
Destructive

Toggles the visibility of the PyNet log/output window.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes
is_availableYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

The annotations include destructiveHint: true, but the description adds no context beyond 'toggles visibility'. It fails to explain what the destructive nature refers to (e.g., state reset, data loss) or any side effects, leaving the agent without critical behavioral insight.

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 extremely concise at one sentence. While it lacks detail, it is front-loaded and direct, with no wasted words. However, it could be longer to add necessary context 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 tool has two required parameters and an output schema, the description is insufficient. It does not explain what the parameters mean (e.g., pid identifier, is_available toggles to true/false), nor does it describe the return value. The destructive hint is not addressed, making the overall completeness low.

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 input schema has 0% description coverage for its two required parameters (pid, is_available). The description provides no additional meaning or constraints for these parameters, leaving their purpose ambiguous.

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 'toggles' and identifies the resource 'visibility of the PyNet log/output window'. It clearly distinguishes the tool's function from sibling tools like get_output_window_status, which likely reads the status without modifying it.

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 get_output_window_status. The description does not mention prerequisites, context, 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.

create_pynet_moduleC
Destructive

Creates a new custom Tab (ButtonsModule) in the Ribbon.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes
nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already provide destructiveHint. The description adds minimal behavioral context beyond 'creates', such as effects on existing modules or permissions needed.

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 is concise but lacks necessary detail, achieving a middle ground.

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 only 1 sentence and no parameter info, the description is incomplete for a 2-parameter 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%, but the description does not explain the parameters (pid, name) at all, leaving the agent without semantic clues.

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 action 'Creates' and the resource 'new custom Tab (ButtonsModule) in the Ribbon', distinguishing it from siblings like delete_pynet_module.

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 or alternatives. Lacks context for decision-making.

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

delete_pynet_moduleC
Destructive

Permanently deletes a module and all its contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes
module_idYes

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?

The description adds 'permanently' to the existing destructiveHint annotation, emphasizing irreversibility but not disclosing other traits like required permissions or effects on dependencies. The annotation already signals destructiveness, so the description adds minimal new insight.

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 7-word sentence, very concise. However, it is too brief to inform the agent adequately, sacrificing substance for brevity.

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?

For a destructive tool with two required parameters, the description lacks important context such as error handling (e.g., if module doesn't exist), dependencies, and whether the deletion cascades. An output schema exists but does not compensate for missing behavioral 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 description does not explain the parameters 'pid' and 'module_id' beyond what is in the schema. With 0% schema description coverage, the tool relies entirely on the description for parameter meaning, which it fails to provide.

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 deletes a module and all its contents, clearly specifying the verb 'delete' and resource 'module'. However, it does not differentiate from sibling tools like 'delete_script_button', which also delete but on different resources.

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 the sibling tools that also perform deletions. There is no mention of prerequisites or conditions.

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

delete_script_buttonB
Destructive

Permanently removes a ScriptButton from a module by Id.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes
button_idYes
module_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

The annotation already provides 'destructiveHint: true', which signals destructiveness. The description adds 'permanently removes', consistent with the annotation. However, it does not disclose additional behavioral details like required permissions, cascading effects on other data, or error conditions. The annotation carries most of the burden here.

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 with the action and resource. Every word earns its place.

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 tool has three required parameters with no descriptions and a destructive action, the description should provide more context about the removal process, return value, or prerequisites. The output schema is present but its content is unknown; the description does not compensate for the lack of parameter documentation.

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 input schema has 0% description coverage on parameters, and the description only says 'by Id', failing to explain what each parameter represents (e.g., pid likely a project ID, module_id a module, button_id the button identifier). The field names offer some clue but are insufficient for an agent to correctly map parameters without additional context.

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 that the tool 'permanently removes a ScriptButton from a module by Id'. It uses a specific verb ('removes'), identifies the resource ('ScriptButton'), and specifies the scope ('from a module by Id'). This distinguishes it from siblings like 'deploy_script_button' (create) and 'update_script_button' (modify).

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 provides no explicit guidance on when to use this tool versus alternatives like 'deploy_script_button' or 'update_script_button'. It does not mention prerequisites, when not to use, or how it fits into a workflow. The word 'permanently' hints at irreversibility but is not a substitute for explicit guidelines.

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

deploy_script_buttonB
Destructive

Installs a new ScriptButton into a specific module (Name, Script, Icon, Tooltip).

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes
nameYes
tooltipNo
icon_nameNoDefault
module_idYes
script_PathYes

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?

Annotations mark destructiveHint=true, but description doesn't disclose what makes it destructive (e.g., overwriting existing buttons). No contradiction, but missing 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?

Single sentence with 10 words, no fluff. Clearly states purpose.

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?

With 6 parameters, a destructive hint, and an output schema, the description is too sparse. Does not explain critical parameters like pid and module_id, nor return behavior.

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%, but description lists Name, Script, Icon, Tooltip which helps map to parameters. However, pid and module_id remain unexplained.

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 uses specific verb 'Installs' with clear resource 'ScriptButton into a specific module', and mentions parameters in parentheses. Distinct from sibling tools like update_script_button.

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 vs alternatives like update_script_button or delete_script_button. Doesn't mention prerequisites or context.

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

get_buttons_dataA
Read-only

Lists all script buttons for a specific module ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes
module_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description adds little beyond that. It mentions the tool lists buttons by module ID, which is consistent but not additional 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?

Single sentence, concise and front-loaded. No unnecessary words.

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?

Description is minimal given two parameters without explanation. Output schema exists but is not shown; return values may be documented there. However, more context about the purpose of pid would improve completeness.

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

Parameters2/5

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

Schema coverage is 0%; description does not explain the parameters pid or module_id beyond implying module_id is the module ID. With low coverage, the description fails to add meaning to the 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?

Description clearly states verb 'Lists' and resource 'script buttons' with a qualifier 'for a specific module ID'. It is specific and distinguishes from sibling tools like delete_script_button or deploy_script_button.

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?

No explicit when-to-use or when-not-to-use guidance. However, the read-only nature is implied by the description and annotations, distinguishing it from mutation tools among siblings.

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

get_output_window_statusB
Read-only

Checks if the output window is currently available/visible.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true. Description adds minimal context about checking availability/visibility, but does not specify return format or edge cases. 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?

Single sentence with no wasted words. 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?

For a simple tool with a single parameter and an output schema, the description is minimal but acceptable. However, the lack of parameter explanation and return value context leaves room for improvement.

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 coverage is 0% with no parameter descriptions. The description does not mention the 'pid' parameter, leaving the agent without any context on what value to provide.

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 'checks' and the resource 'output window status' with specific scope 'available/visible'. It uniquely distinguishes this tool from sibling tools like viewer_status or check_plugin_status.

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. No mention of prerequisites or context. Usage context is implied from the tool name alone.

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

get_pynet_ui_layoutC
Read-only

Fetches the full UI structure (ButtonsModules and ScriptButtons).

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior3/5

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

Annotations provide readOnlyHint=true, so the tool is safe. The description adds context about the fetched content (ButtonsModules and ScriptButtons). It does not disclose potential errors, performance implications, or authorization needs, but annotations cover the safety aspect.

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, front-loaded with the core action. No wasted words.

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?

While the output schema exists, the description omits explanation of the required 'pid' parameter. It also lacks comparison with sibling tools. For a tool with one required parameter, this is insufficient.

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 'pid' parameter. The agent has no information about what 'pid' represents or how to use it.

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 fetches the full UI structure (ButtonsModules and ScriptButtons). The verb 'Fetches' and resource are specific, but it does not explicitly differentiate from sibling tools like 'get_buttons_data'.

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. The description implies it is for obtaining the full UI layout, but does not mention exclusions or context (e.g., compare with get_buttons_data).

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

list_active_instancesA
Read-only

Scans the system for running Autodesk processes with an active PyNet IPC pipe.

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?

Annotations already provide readOnlyHint=true, and description adds behavioral context by specifying the condition of an active PyNet IPC pipe, which is valuable beyond the annotation. 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?

Single sentence, front-loaded with action, no unnecessary words. Highly efficient.

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 existing output schema, the description fully explains the tool's purpose and behavior. It is complete for an agent to invoke without additional context.

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?

No parameters exist, so schema coverage is 100%. The description adds meaning by defining the scope of scanning (processes with active pipe), which compensates for the absence 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?

Description clearly specifies the verb 'scans' and the resource 'running Autodesk processes with an active PyNet IPC pipe', distinguishing it from sibling tools which focus on plugin, UI, or viewer operations.

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?

No explicit guidance on when to use this tool versus alternatives. While sibling tools are different, the description implies its usage for discovering active instances, but no when-not-to or prerequisites are stated.

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

send_commandB
Destructive

Direct script execution in the PyNet engine (Target PID, Script Name, Content).

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes
contentYes
timeoutYes
script_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already mark destructiveHint=true; description adds 'direct script execution' but lacks details on side effects or permissions beyond annotation.

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 sentence with parenthetical list; efficient but could better structure parameter explanation.

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?

Destructive tool with 4 required params and no schema descriptions; description lacks scripting constraints, output explanation, and usage context despite having an output schema.

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?

With 0% schema coverage, description mentions pid, script_name, content but omits timeout and offers no format/type guidance for content or script_name.

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?

Clearly states verb 'execute' and resource 'script' with key parameters (PID, Script Name, Content), distinguishing from sibling send_command_by_path which uses path instead of PID.

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?

Implies usage for direct script execution by PID but provides no explicit conditions or comparison with alternative send_command_by_path.

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

send_command_by_pathA
Destructive

Executes a script file directly by path in the PyNet engine, without sending content inline.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes
timeoutYes
file_pathYes
script_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Description aligns with annotations (destructiveHint=true) and adds the behavioral distinction of executing via path vs inline. However, it does not disclose other traits like authentication needs, rate limits, or side effects beyond execution.

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 that is front-loaded and efficient, with no wasted words.

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 (not shown), the description omits critical context for a destructive, path-based execution tool: file existence, permissions, error handling, and typical usage scenarios. This is inadequate given the tool's complexity.

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

Parameters2/5

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

Schema has 0% description coverage, and the description provides no meaning for any of the 4 required parameters (pid, script_name, file_path, timeout). The agent must infer solely from parameter names, which is insufficient for correct invocation.

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 the action ('Executes a script file directly by path') and the resource ('in the PyNet engine'), and contrasts with inline sending, distinguishing it from sibling tool 'send_command'.

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?

Implied usage when a script file path is available, but no explicit guidance on when to use this tool versus alternatives like send_command, nor any exclusions or prerequisites.

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

update_script_buttonB
Destructive

Updates metadata for an existing ScriptButton or moves it to another module.

ParametersJSON Schema
NameRequiredDescriptionDefault
pidYes
nameYes
tooltipYes
button_idYes
icon_nameYes
module_idYes
script_PathYes
dest_module_idNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

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

The annotations already declare destructiveHint=true, and the description confirms mutation by using 'updates' and 'moves'. However, no additional behavioral details are given (e.g., authorization requirements, side effects, or rollback capabilities), so the description adds limited value beyond the annotation.

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 that efficiently communicates the two core functions upfront. There is no redundant information, and every word contributes to understanding the tool's purpose.

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 8 parameters (7 required) and an output schema, the description does not clarify parameter groupings, the optional nature of dest_module_id for moving, or what the output contains. An agent would need additional context to use the tool correctly.

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?

With 0% schema description coverage, the description should compensate but only weakly connects 'metadata' to parameters like name, tooltip, and icon_name, and 'move' to dest_module_id. It does not explain the role of each parameter or provide examples, leaving the agent to infer the mapping.

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 two specific actions (updating metadata and moving to another module) with a concrete resource (ScriptButton). It effectively distinguishes from sibling tools like delete_script_button and deploy_script_button by specifying the operations that are unique to this tool.

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 updating or moving a ScriptButton, but it does not explicitly state when to use this tool versus alternatives such as delete_script_button or deploy_script_button. No exclusions or context-specific guidance is provided.

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

viewer_clearA
Read-only

Clears highlights and ghosting in the open viewer.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

Annotations declare readOnlyHint: true, but the operation modifies the viewer's visual state. The description does not elaborate on side effects or whether the action is reversible. However, it is clear that it removes existing highlights/ghosting.

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?

A single, informative sentence with no unnecessary words. It front-loads the core action and object.

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 no parameters and an output schema, the description is sufficient. It could be improved by noting that it affects only the open viewer.

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 no parameters, so the baseline is 4. The description does not need to add parameter details since the schema is empty and 100% covered.

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 specific action ('clears') and the target resource ('highlights and ghosting in the open viewer'). It distinguishes from sibling tools like viewer_highlight_clash and viewer_isolate.

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 alternatives. The description implies it should be used after highlights or ghosting are applied, but does not mention prerequisites or scenarios.

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

viewer_fitA
Read-only

Fits the camera to all models in the open viewer.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already indicate readOnlyHint=true, so the read-only safety is covered. The description adds value by specifying that the camera fits to 'all models' (not just selected), which is a behavioral trait. 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 single sentence that is perfectly front-loaded and contains no fluff. Every word earns its place.

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, simple action, and an output schema (mentioned in context), the description is complete. An agent can understand exactly what the tool does without additional context.

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 schema coverage is 100% trivially. The description does not need to add parameter details. Baseline 4 is appropriate for no parameters.

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 action ('fits the camera') and the target ('all models in the open viewer'), distinguishing it from sibling tools like 'viewer_isolate' or 'viewer_clear'. The verb 'fits' is slightly technical but specific enough for an AI agent.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool vs alternatives like 'viewer_isolate' or 'viewer_select'. It lacks context for prerequisites or situations where this tool is appropriate.

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

viewer_get_propertiesA
Read-only

Reads element properties (name, model, psets) from the loaded package's properties.json.

Pass one or more pnt_ids to get their properties. Called with no pnt_ids, returns a lightweight index (pnt_id → name, model) so you can discover what's available. The data source is the .pnt's properties.json, NOT the viewer or IFC.

ParametersJSON Schema
NameRequiredDescriptionDefault
pnt_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already provide readOnlyHint. Description adds valuable context: the data comes from properties.json, not the viewer; the tool returns an index when called without pnt_ids. No contradictions with annotations.

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 short paragraphs, front-loaded with the core purpose. Every sentence adds value; no wasted words. Highly efficient.

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, description need not detail return structure. It covers dual behavior and data source. Could mention error handling or prerequisites, but for a read-only tool with one optional param, it is sufficiently complete.

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 description fully explains the single parameter pnt_ids: optional, triggers property retrieval when provided, or returns a lightweight index when omitted. This meaningfully compensates for the lack of schema 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?

Description clearly states it reads element properties from properties.json, with specific verb 'reads' and resource 'element properties (name, model, psets)'. Distinguishes from siblings by specifying the data source and dual behavior (index vs. full properties).

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 says when to use with pnt_ids and without, and clarifies the data source is NOT the viewer or IFC. No explicit when-not or alternatives to sibling tools, but the context is clear enough for selection.

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

viewer_get_stateA
Read-only

Reads the viewer's last reported state (currently the list of loaded models).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.7/5.0
Behavior5/5

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

The description aligns with the readOnlyHint annotation, confirming a read-only operation. It adds useful detail about the return value ('list of loaded models'), which is beyond what the annotation provides, enhancing 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, clear sentence with no unnecessary words. It front-loads the action and outcome efficiently.

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 simple, parameterless tool with an output schema, the description is complete. It indicates what is returned (the state, currently list of models) and the read-only nature, covering all essential aspects.

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 per guidelines the baseline is 4. The description does not need to add parameter information and is adequate for a parameterless tool.

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 reads the viewer's last reported state and specifies it currently returns the list of loaded models. It uses a specific verb ('Reads') and resource ('viewer's state'), and distinguishes from sibling viewer tools like viewer_get_properties or viewer_isolate by focusing on general state.

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?

Although no explicit when-to-use or when-not-to-use instructions are given, the tool has no parameters and the purpose is straightforward. Given the sibling tools, it's clear this is the generic state reader, so context is sufficient.

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

viewer_highlight_clashC
Destructive

Highlights a clash pair in the open viewer by pnt_id (element A red, element B green).

ParametersJSON Schema
NameRequiredDescriptionDefault
pnt_id_aNo
pnt_id_bNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior1/5

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

Annotation indicates destructiveHint=true, but the description describes a non-destructive highlight operation. This contradiction undermines transparency. No other behavioral traits are disclosed.

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

Conciseness4/5

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

One efficient sentence, front-loaded with the action. No unnecessary words, though the parenthetical could be clearer regarding the color mapping.

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 that annotations provide destructiveHint=true (contradicting) and no output description, the tool lacks essential context. It doesn't mention that the viewer must be open, what happens if pnt_ids are invalid, or the return value (output schema exists but unused). Incomplete for effective 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 has 0% description coverage. The description adds mapping: pnt_id_a for element A (red), pnt_id_b for element B (green), which provides some meaning beyond the schema. However, it lacks details on valid values, format, or optionality.

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 'highlights', the resource 'clash pair', and specifies the visual effect (element A red, element B green). It distinguishes well from sibling tools like viewer_isolate or viewer_select.

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, nor any prerequisites mentioned. The description does not address when highlighting is appropriate compared to viewer_isolate or other tools.

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

viewer_isolateA
Destructive

Isolates (hides everything except) the given pnt_ids in the open viewer.

Note: the command is broadcast, but the current viewer build ignores the 'isolate' action (frontend handler pending). It will take effect once the viewer wires it.

ParametersJSON Schema
NameRequiredDescriptionDefault
pnt_idsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

The description adds important behavioral context beyond annotations: it notes that the command is broadcast but currently ignored due to a pending frontend handler. This alerts the agent to a potential no-op. The destructiveHint annotation is consistent with the description.

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: first states the core function, second adds critical behavioral disclosure. No wasted 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?

The description covers purpose, parameter meaning, and current limitation. It assumes the viewer is open (implied by 'in the open viewer'). With an output schema present but not described, the description is sufficient for a simple 1-parameter tool.

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?

The parameter 'pnt_ids' has 0% schema description coverage, so the description must compensate. It explains that these are the IDs to isolate to, but lacks detail on format or constraints. The parameter is not required, but no default behavior is described.

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 purpose: 'Isolates (hides everything except) the given pnt_ids in the open viewer.' It uses a specific verb 'isolates' and specifies the resource 'viewer'. This distinguishes it from sibling tools like viewer_clear or viewer_select.

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 when to use (to hide all except given point IDs) but does not provide explicit guidance on alternatives or when not to use. No comparison with sibling tools is given.

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

viewer_list_clashesA
Read-only

Reads the loaded package's clashes.json — the data source, NOT the viewer/IFC.

Returns each clash with the pnt_id identifiers needed to highlight it.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true; description adds context that it reads a specific file (clashes.json) rather than viewer data. No contradictions. Clarifies the non-destructive nature and data source.

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 concise sentences covering purpose, data source, and key output. No extraneous content.

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, presence of output schema, and simple read-only operation, the description provides sufficient context. It mentions the critical return element (pnt_id identifiers) that aids tool selection.

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?

No parameters (schema coverage 100%). Description adds meaning by specifying that the return includes pnt_id identifiers for highlighting, which is useful beyond the empty 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?

Clearly states it reads clashes.json (data source) and returns clash data with pnt_id identifiers for highlighting. Distinguishes from viewer/IFC and sibling tools like viewer_highlight_clash.

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?

Explains the tool's input (loaded package's clashes.json) and output (pnt_id identifiers). Implicitly contrasts with viewer/IFC and highlighting tool, but does not explicitly state when not to use alternatives.

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

viewer_load_packageB
Destructive

Loads a .pnt into the open viewer and returns a summary read from clashes.json.

ParametersJSON Schema
NameRequiredDescriptionDefault
pnt_pathYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already indicate destructive hint, so description should elaborate on side effects. It mentions loading but does not clarify if previous viewer state is cleared, overwritten, or merged. The return of a summary is noted but not the behavioral impact on viewer state.

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, efficient, front-loaded with action and result. No unnecessary words.

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 destructive hint and a single parameter, the description lacks completeness. It does not state if viewer must be empty, if loading fails gracefully, or how the summary is used. Output schema is present but not described.

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

Parameters2/5

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

Schema coverage is 0%, so description must add meaning. It mentions 'pnt_path' implicitly but provides no details on file format, required permissions, or format constraints. The parameter is not explained beyond its name.

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 action ('loads'), the resource ('.pnt file'), the destination ('open viewer'), and the return value ('summary from clashes.json'). It is specific and distinguishes from sibling tools like viewer_clear or viewer_highlight_clash.

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. It does not mention prerequisites (e.g., viewer must be open) or typical workflow (e.g., use after viewer_list_clashes).

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

viewer_selectA
Destructive

Highlights a set of elements in the open viewer by pnt_id.

Pass a list of pnt_ids in pnt_ids (group A). Optionally pass a second list in pnt_ids_b to highlight a second group in a distinct colour. Replaces any previous selection. Use viewer_list_clashes / viewer_get_properties to obtain pnt_ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
pnt_idsNo
pnt_ids_bNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior4/5

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

Description notes that the tool replaces any previous selection, aligning with destructiveHint: true. Adds color distinction for second group. No contradiction with annotations.

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

Conciseness4/5

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

Three sentences, front-loaded with primary function. Could be slightly more concise, but no waste.

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?

Covers key behaviors: highlighting, replacement, and obtaining IDs. Lacks details on error handling or behavior with invalid IDs. Output schema exists, so return value is not needed.

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 0%, so description compensates partially. Explains pnt_ids as group A and pnt_ids_b as optional second group with distinct color, but does not detail array format or behavior when both are empty.

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 action ('highlights'), the resource ('elements in the open viewer'), and the identifier ('by pnt_id'). It distinguishes from sibling tools like viewer_clear and viewer_isolate by focusing on highlighting.

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 says to use viewer_list_clashes or viewer_get_properties to obtain pnt_ids, and describes optional second group. Lacks explicit when-not-to-use, but overall context is clear.

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

viewer_statusA
Read-only

Reports whether a PyNet BIM Viewer is open in VS Code (port, package, data dir).

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, so the description adds value by specifying the reported status info. No contradictions exist, but the description does not elaborate on other behavioral traits like authentication or permissions.

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 conveys the core purpose and output immediately. 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 absence of parameters, the presence of readOnlyHint annotation, and an output schema, the description sufficiently explains what the tool does. It lacks only minor context like error conditions or response format, but the output schema covers that.

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 semantics. 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's purpose: reports whether a PyNet BIM Viewer is open in VS Code, and specifies the details it provides (port, package, data dir). While it differentiates from siblings by focusing on the viewer status, it does not explicitly exclude other status-checking tools.

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 provides no guidance on when to use this tool versus alternatives such as check_plugin_status or list_active_instances. Agents must rely on the tool name and context to infer usage.

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. 12 tool updatesv1.1.0
    • Changedsend_command2 fields changed
      • addedInput schema / properties / timeout
        Added value: +{
        +  "title": "Timeout",
        +  "type": "number"
        +}
      • changedInput schema / required
        Previous value: -[
        -  "pid",
        -  "script_name",
        -  "content"
        -]New value: +[
        +  "pid",
        +  "script_name",
        +  "content",
        +  "timeout"
        +]
    • Addedsend_command_by_path
    • Addedviewer_clear
    • Addedviewer_fit
    • Addedviewer_get_properties
    • Addedviewer_get_state
    • Addedviewer_highlight_clash
    • Addedviewer_isolate
    • Addedviewer_list_clashes
    • Addedviewer_load_package
    • Addedviewer_select
    • Addedviewer_status
  2. 1 tool updatev1.0.1
    • Addeddeploy_script_button
  3. 11 tool updatesv1.0.0
    • First observedcheck_plugin_status
    • First observedconfigure_output_window
    • First observedcreate_pynet_module
    • First observeddelete_pynet_module
    • First observeddelete_script_button
    • First observedget_buttons_data
    • First observedget_output_window_status
    • First observedget_pynet_ui_layout
    • First observedlist_active_instances
    • First observedsend_command
    • First observedupdate_script_button

TDQS

A3.5/5.0

Scored across 23 tools

Disambiguation5/5

Each tool has a clear, distinct purpose. Viewer tools (viewer_select, viewer_highlight_clash, viewer_isolate) are differentiated by their specific actions. Module/script tools are well-separated. The only slight overlap is between send_command and send_command_by_path, but their descriptions clarify the difference (inline content vs file path).

Naming Consistency5/5

All tools follow a consistent verb_noun pattern in snake_case. Viewer tools use a 'viewer_' prefix grouping related functionality. Verbs are imperative and clear (create, delete, get, list, send, etc.). No mixing of camelCase or other conventions.

Tool Count4/5

23 tools is on the higher end but reasonable for the scope of managing a plugin system and a BIM viewer. While borderline, each tool seems necessary for the domain, and there are no redundant tools. The count is slightly above ideal but still manageable.

Completeness3/5

The tool set covers CRUD for modules and script buttons well, but the viewer side has gaps: no tool to unload a package, close the viewer, or list available script commands. Additionally, viewer_isolate is noted as not yet functional, representing a missing feature. Some operations like updating a script button's content are present, but the overall coverage is not fully comprehensive.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers