Skip to main content
Glama
RAEN-DT

PyNet Bridge

by RAEN-DT

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
PYTHONPATHNoPath to your src directory

Instructions

Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.

This server publishes no instructions, or was last inspected before Glama recorded them.

Capabilities

Features and capabilities supported by this server

Protocol revision2025-11-25

CapabilityDetails
tools
{
  "listChanged": false
}
prompts
{
  "listChanged": false
}
resources
{
  "subscribe": false,
  "listChanged": false
}
experimental
{}

Tools

Functions exposed to the LLM to take actions

NameDescription
list_active_instancesA

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

check_plugin_statusB

Handshake ping to verify the plugin listener is responsive.

send_commandB

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

send_command_by_pathA

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

get_output_window_statusB

Checks if the output window is currently available/visible.

configure_output_windowC

Toggles the visibility of the PyNet log/output window.

get_pynet_ui_layoutC

Fetches the full UI structure (ButtonsModules and ScriptButtons).

create_pynet_moduleC

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

delete_pynet_moduleC

Permanently deletes a module and all its contents.

get_buttons_dataA

Lists all script buttons for a specific module ID.

deploy_script_buttonB

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

update_script_buttonB

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

delete_script_buttonB

Permanently removes a ScriptButton from a module by Id.

viewer_statusA

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

viewer_list_clashesA

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.

viewer_load_packageB

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

viewer_highlight_clashA

Highlights a clash (element(s) A red, element(s) B green) and isolates the rest away.

Usually one pnt_id per side (a single clash pair), but either side accepts a list — e.g. one element (A) against every counterpart it clashes with (B), all shown at once.

viewer_fitA

Fits the camera to all models in the open viewer.

viewer_clearA

Clears highlights and ghosting in the open viewer.

viewer_selectA

Highlights a set of elements in the open viewer by pnt_id, in neutral colours (yellow / blue) with nothing else hidden — a plain "look at these" pointer.

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. For a clash pair (red/green, with the rest of the model isolated away), use viewer_highlight_clash instead.

viewer_isolateA

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

viewer_isolate_modelsA

Shows only the given model(s)/discipline(s) (by exact name, e.g. "Snowdon Towers Sample HVAC"), hiding every other loaded model. Cheaper than viewer_isolate for "just show me this discipline" requests — no need to resolve every element's pnt_id first. Get the exact model names from viewer_get_state's "models" list. Undo with viewer_clear.

viewer_get_stateA

Reads the viewer's last reported state: loaded models and the pnt_id of whatever the user currently has selected (click in the 3D view or the tree panel — null if nothing is selected). Use the returned pnt_id with viewer_get_properties for its details, or feed it into a clashes.json lookup to find what it clashes with.

viewer_get_propertiesA

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

Pass one or more pnt_ids to get their full properties (including psets) directly.

Called with no pnt_ids, returns a paginated lightweight index (pnt_id, name, model) instead of every element — narrow it with model (exact model/discipline name, e.g. "Snowdon Towers Sample HVAC") and/or search (case-insensitive substring of the element name), and page through with limit/offset (default 200 per page, capped at 500). On a federated model the unfiltered index can have tens of thousands of entries — always pass model or search when you can, and use offset to page through the rest.

The data source is the .pnt's properties.json, NOT the viewer or IFC.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

TDQS

B3.2/5.0

Scored across 24 tools

Disambiguation3/5

The viewer tools overlap heavily: viewer_isolate vs viewer_isolate_models, viewer_select vs viewer_highlight_clash, and viewer_get_properties vs viewer_list_clashes all operate on similar element-visibility/data concepts. The descriptions explicitly cross-reference each other ('use X instead'), which mostly resolves selection, but an agent must read carefully to pick correctly.

Naming Consistency4/5

All tools use snake_case verb_noun form, which is readable and consistent. There are minor grouping deviations (some tools carry a viewer_ prefix, some a pynet_ prefix, others are bare like send_command or check_plugin_status), but no camelCase/snake_case mixing.

Tool Count3/5

24 tools is on the heavy side for the apparent scope. The UI/module management and IPC scripting areas are reasonably tight, but the viewer control surface alone accounts for eleven tools and could be consolidated.

Completeness4/5

CRUD for modules and script buttons is largely covered (create/read/update/delete), and the viewer has load, fit, clear, isolate, highlight, select, state, properties, and clash lookup. Minor gaps like no module update/rename and no viewer unload/close keep it from fully complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues