Skip to main content
Glama

vpp_edit_class_model

Applies ordered, all-or-nothing edits to a Visual Paradigm class model and diagram, writing the result to a new file while leaving the original unchanged.

Instructions

Zmiany w modelu klas i na diagramie klas; wynik do NOWEGO pliku (oryginał bez zmian). Lista zmian wykonywanych po kolei, wszystkie albo żadna. Każda zmiana to obiekt z polem "op":

  • {"op":"add_class","name":"FabrykaZamowien","kind":"class|abstract class|interface|enumeration", "attributes":["-licznik : int"], "operations":["+utworz(klient : Klient) : Zamowienie"], "literals":["A","B"], "static_members":["licznik"], "abstract_operations":["utworz"], "x":100, "y":200, "diagram":""}

  • {"op":"add_attribute","class":"Klient","text":"-email : String [0..1]","static":false}

  • {"op":"add_operation","class":"Klient","text":"+zaloguj(email : String, haslo : String) : boolean","static":false,"abstract":false}

  • {"op":"change_operation","class":"Menu","name":"dodajDanie","text":"+dodajDanie(nazwa : String, cena : double) : Danie"} (zachowuje ID metody, więc komunikaty w diagramach sekwencji dalej na nią wskazują)

  • {"op":"change_attribute","class":"Danie","name":"cena","text":"-cena : double"}

  • {"op":"remove_member","class":"Klient","name":"dodajAdres"} (odmówi, jeśli metodę wywołuje komunikat)

  • {"op":"add_literal","class":"StatusZamowienia","literal":"REKLAMOWANE"}

  • {"op":"add_relationship","kind":"generalization|realization|dependency|association|directed|aggregation|composition", "source":"Klient","target":"Użytkownik", "source_multiplicity":"1","source_role":"klient", "target_multiplicity":"0..*","target_role":"zamowienia","stereotype":"use"} generalization: source=podklasa, target=nadklasa; realization: source=klasa, target=interfejs; dependency: source używa target (opcjonalny stereotype np. use/create); aggregation/composition: source=całość (romb przy source); directed: strzałka przy target.

  • {"op":"remove_relationship","id":""}

  • {"op":"move_class","class":"Koszyk","x":400,"y":120} (przelicza linie relacji tej klasy)

  • {"op":"fit_class","class":"Koszyk"} (dopasowuje rozmiar pudełka do treści) Typy: int, double, boolean, void, char, long, float, byte, short, nazwy klas z projektu, dowolny tekst (String, LocalDateTime), generyki np. List. Widoczność: + publiczna, - prywatna.

Input Schema

NameRequiredDescriptionDefault
changesYes
output_pathYes
source_pathYes
overwrite_outputNo

Output Schema

NameRequiredDescriptionDefault
resultYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.1.0

TDQS

A4.3/5.0
Behavior4/5

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

With zero annotations the description carries the full burden, and it does substantial work: non-destructive output-to-new-file, atomic transaction semantics, sequential ordering, conditional refusal on remove_member, ID preservation in change_operation keeping sequence-diagram messages valid, and side effects for move_class (relation lines recomputed) and fit_class (box resized). Remaining gaps are the source_path/output_path/overwrite_output behaviors and error/partial-failure reporting, but the mutation surface is well 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?

Front-loaded with purpose and a one-line atomicity rule, then a dense bullet-per-operation reference rather than prose. It is long, but nearly every line encodes syntax an agent could not otherwise infer (op names, field names, override semantics); the closing type and visibility glosses are worth their space.

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 multi-op mutation tool with an output schema, the description covers the operation vocabulary, ordering, atomicity, and key side effects well. It stops short of describing the source_path contract, overwrite_output behavior, or what a rejected batch reports back, which an agent would want before a first call.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it does so heavily for the dominant parameter: every 'op' variant is enumerated with field-level meaning, direction conventions for generalization/realization/dependency/aggregation, allowed type names, and visibility syntax. The three path/overwrite parameters are only implicitly addressed ('wynik do NOWEGO pliku') and overwrite_output is never explained.

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?

Opens with a specific verb+resource pair ('Zmiany w modelu klas i na diagramie klas') and immediately adds the key distinguishing scope: the result goes to a NEW file with the original untouched. This clearly separates it from read-only siblings like vpp_get_class and vpp_list_classes without needing to name them.

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?

Gives strong operational context: changes are applied in order and are all-or-nothing, and remove_member refuses when a message still calls the method. What it lacks is any explicit routing versus alternatives (e.g., when to use change_operation vs remove_member+add_operation), leaving that to inference from the genre of the tool.

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