Skip to main content
Glama

Widget bedienen

widget_action

Bedient ein Widget live: timer: start/pause/reset/set/add; name_picker: pick/reset; groups: shuffle/empty/move/clear; dice: roll; poll: open/qr/close/vote/unvote/reset/reveal; traffic_light: set; scoreboard: add/reset; inputs: input_add/input_remove/join/leave/help/help_done/help_clear; drawing: clear/stroke_add/undo; work_symbols: set; lesson: next/prev/goto/stop; reflection: submit/new_round; learning_tasks: status/reset; schedule: check/reset; duties: rotate; word_duel: guess/miss/turn/solve/undo/new_round/reset; seating: place/shuffle/fill/clear/room/furniture_add/furniture_update/furniture_remove; buzzer: ask/buzz/right/wrong/reveal/open_devices/close_devices/reset; slides: next/prev/goto; media: play/pause/toggle/restart/stop/seek/volume/mute/fullscreen/speaker/sound. params: timer.set {minutes|seconds, label?, start?}, timer.add {minutes|seconds}, groups.shuffle {groupCount|groupSize}, groups.empty {groupCount}, groups.move {name, group (Index, null = Klassenliste)}, inputs.join/leave {input, name}, inputs.help {name}, learning_tasks.status {task, name, status}, schedule.check {item (Index ab 0 oder Titel), done? (ohne: umschalten)}, schedule.reset, Kinder per Vorname (name) oder Id (student, siehe class.children); heißen zwei gleich, nennt die Antwort die Namen zur Unterscheidung. Widgets speichern Kinder als Id. poll.vote {option}, scoreboard.add {team (Index, Name oder Farbe, z. B. "rot"), points? (Standard: step, negativ zieht ab)}, scoreboard.reset (neues Rennen), traffic_light.set {state}, work_symbols.set {symbol}, word_duel.new_round {word, hint?} (Wort geheim setzen und Runde starten), word_duel.guess {letter, team?}, word_duel.miss {team?}, word_duel.solve {team}. seating.place {name (Vorname) oder student (Id), seat (Platz-Index ab 0, null = vom Platz)}, seating.shuffle, seating.fill, seating.clear, seating.room {furniture?} (Raum frei einrichten; ohne furniture: die Anordnung übernehmen), seating.furniture_add {kind: desk|group|teacher|board|door|window|shelf|carpet|rug|plant|pot|beanbag|lamp (die letzten fünf: Teppich, Pflanzen, Sitzsack, Lampe – ohne Plätze), x?, y?, rot? (Grad), seats?, label?}, seating.furniture_update {id oder Tischnummer, x?, y?, w?, h?, rot?, seats?, label?}, seating.furniture_remove {id} (Raum 100 × 75, x/y = Mitte, vorn = oben). buzzer.ask {question?, answer?} (ohne question: nächste aus der Quiz-Liste; die Antwort bleibt geheim), buzzer.buzz {team}, buzzer.right, buzzer.wrong, buzzer.reveal, buzzer.open_devices (Link für Kind-Geräte). Statt widget_id kann widget_type angegeben werden; fehlt ein solches Widget, wird es angelegt.

Tool call template

Replace each placeholder with a value matching the input schema. Only required parameters are included; add optional parameters as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {
      "action": "<action>"
    },
    "name": "widget_action"
  }
}

Input Schema

NameRequiredDescriptionDefault
actionYes
paramsNo
board_idNoID des Bildschirms (board_id). Weglassen = zuletzt benutzter Bildschirm.
widget_idNo
widget_typeNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observed

TDQS

A3.7/5.0
Behavior1/5

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

The annotations declare destructiveHint=false, but the description explicitly lists destructive actions such as drawing: clear, groups: empty/clear, seating: clear/furniture_remove, and buzzer: reset. This directly contradicts the annotation and merits a 1 under the contradiction rule.

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

Conciseness4/5

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

The description is long, but the length is justified by the tool's dispatcher complexity across 20 widget types and many actions. It is front-loaded with the action inventory, though the single dense paragraph with semicolons makes it harder to scan than a structured list would be.

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 high complexity, low schema description coverage, and no output schema, the description provides enough action, parameter, default, and fallback information to invoke the tool correctly. It even explains name ambiguity reporting and widget_type auto-creation.

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

Parameters5/5

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

Schema description coverage is only 20%, so the description carries the burden and does so extensively. It documents per-action params, nested object shapes, defaults such as scoreboard.add points defaulting to step, seating coordinates, and name/id resolution behavior.

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

Purpose5/5

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

The description opens with 'Bedient ein Widget live' and then enumerates the exact live actions available per widget type. This is a specific verb+resource combination that clearly distinguishes runtime widget control from CRUD siblings like add_widget or update_widget.

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 through the action list and explains that widget_type can substitute for widget_id with auto-creation if missing. However, it does not explicitly say when to use this tool instead of update_widget, add_widget, or remove_widget, leaving routing to inference.

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

Try in Browser

Glama MCP Gateway

Add one secure layer between your agents and this server.

Resources