Skip to main content
Glama
Gribiche64

vw-bridge

by Gribiche64

write_fixture_patch

Apply fixture patch changes to Vectorworks through Lightwright XML, supporting type swaps and corrections without Lightwright. Validates UIDs/fields and flags wattage mismatches.

Instructions

Apply field changes to fixtures via the Lightwright Data Exchange XML.

The MCP writes a Lightwright-style patch directly to the active XML. Vectorworks' file watcher picks it up on focus-in and applies the changes to the drawing — no Lightwright the application required in the loop.

Args: changes: list of dicts, each with: - "uid": dotted UID, e.g. "1246.1.1.0.0" - "fields": dict of XML field name → string value, e.g. {"Inst_Type": "Robe iForte LTX", "Symbol_Name": "Robe iForte LTX", "Wattage": "1250 W"}

Returns dict with: written_to, uids_changed, patch_size_bytes, warnings.

Safety: - Refuses Delete operations (the writer is patch-only; Delete is a separate operation we intentionally don't support). - Refuses unknown field names (catches typos before VW sees them). - Refuses UIDs not in the current snapshot. - Warns (does not refuse) if Inst_Type changes without Wattage — this is the 'frankenfixture' risk: new symbol but stale wattage.

To plan a type swap safely: 1. Call get_fixture_details(uid) to confirm target UID. 2. Call find_fixture_of_type(new_type) to get the correct Symbol_Name and Wattage strings. If count is 0, pre-place a fixture in VW first. 3. Call write_fixture_patch with Inst_Type + Symbol_Name + Wattage in the same change.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
changesYes

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault

No arguments

Schema Changelog

Changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. First observedv0.1.0

TDQS

A5/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 safety burden and meets it: it discloses direct XML writing, the focus-in/apply behavior, refusals for deletes/unknown fields/unknown UIDs, and the frankenfixture warning. No annotation contradiction exists.

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 long but strictly functional: purpose, args, return value, safety, and a planning sequence are each separated and front-loaded with the core purpose. No filler or repetition.

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 complex mutation tool with no annotations and minimal schema, the description covers inputs, output keys, failure/refusal modes, warnings, and cross-tool workflow. The return schema exists, and the description still names the return keys, so nothing essential is missing.

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?

Input schema has 0% description coverage and a generic additionalProperties object, so the description must fully explain the changes parameter. It does: 'list of dicts', required keys uid and fields, dotted UID format, exact XML field-name-to-string mapping, and a realistic example.

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?

First sentence names a specific verb-resource pair ('Apply field changes to fixtures') and the mechanism (Lightwright Data Exchange XML). It is clearly distinct from the read-only sibling tools like get_fixture_details and find_fixture_of_type.

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?

Includes a concrete step-by-step workflow naming get_fixture_details and find_fixture_of_type as prerequisites, and tells the agent exactly when to call write_fixture_patch. It also states what the tool refuses to do, which doubles as when-not-to-use guidance.

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

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/Gribiche64/vectorworks-bridge'

If you have feedback or need assistance with the MCP directory API, please join our Discord server