Skip to main content
Glama

Baustein ändern

update_support_item

Ändert einen Baustein eines Lernpakets (item_id aus list_support): Titel, Auftrag, Datei/Link oder den Inhalt. Nur angegebene Felder werden geändert; quiz, math, cloze, mark, sort, code und vocab ersetzen den ganzen Inhalt (also alle Fragen mitschicken, die bleiben sollen) – Vokabeln ergänzen mit vocab_add, entfernen mit vocab_remove. Die Art (kind) bleibt – für eine andere Art einen neuen Baustein anlegen und den alten entfernen.

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": {
      "package_id": "<package_id>",
      "item_id": "<item_id>"
    },
    "name": "update_support_item"
  }
}

Input Schema

NameRequiredDescriptionDefault
urlNohttps-Link (z. B. bei link, video)
bodyNoText bzw. Arbeitsauftrag zum Baustein (**fett**, Absätze mit Leerzeile – oder formatiertes HTML: <p>, <h2>, <h3>, <ul>/<ol>/<li>, <b>, <i>, <u>, <a href>, <span style="color/background-color">)
codeNoNur bei kind=code (Programmieren, Roboter-Puzzle nach Ideen von Robot Karol und Scratch): Das Kind reiht Bausteine aneinander, drückt Start und die Figur läuft über das Raster. Ein Level ist geschafft, wenn alles erfüllt ist, was die Karte verlangt: auf Z stehen (falls da), alle Sterne * eingesammelt, kein Ding D liegt mehr außerhalb eines Zielfelds, jedes Zielfeld M ist belegt oder markiert, kein Feld zu viel markiert. Stufen (stage): start = Pfeile hoch/runter/links/rechts; karol = die Figur schaut in eine Richtung – „Schritt“, „links drehen“, „rechts drehen“ plus „aufheben“/„hinlegen“/„markieren“, wenn die Karte Dinge oder Zielfelder hat; profi = karol plus „Wiederhole nד, „Wenn … dann“ und „Solange …“ mit den Fragen Wand vorne? / Ding hier? / markiert? (auch verneint), Kästen bis zu zwei tief ineinander. Ein eigener Befehl (proc) ist eine benannte Baustein-Folge, die das Kind baut und wie einen Baustein einsetzt. Das Thema (hero, goal, star, wall, thing) tauscht nur die Emojis: Beet bepflanzen (thing 🌱, M-Felder), Müll sammeln (🥫, D-Felder), Schnee räumen (❄️), Pakete sortieren (📦 von D nach M), Mauer bauen (🧱 auf M, wall 🪨), Äpfel ernten (🍎). Oder ein Drachen-Level (dragon statt map): Angriffe so oft einsetzen, dass der Drache genau 0 Leben hat. Beliebig viele Versuche, Tipps nach Fehlversuchen; die Lehrkraft sieht je Level, ob und im wievielten Versuch es geklappt hat. Sanft steigern: erst Pfeile auf kurzen Wegen, dann Kurven und Sterne, dann Schleifen mit max_blocks; Karol: erst Schritt und Drehen, dann aufheben/hinlegen; Profi: Wenn/Solange auf langen Reihen (Wand vorne?) und ein eigener Befehl für Wiederkehrendes (z. B. „Reihe pflanzen“). Drachen-Level als Rechen-Schleifen-Rätsel.
fileNoName einer hochgeladenen Datei der Klasse (Materialien), z. B. "Gemeinde-Podcast.mp3"
markNoNur bei kind=mark: Wörter markieren/unterstreichen
mathNoNur bei kind=math: Rechenaufgaben mit Platzhalter _ für die gesuchte Zahl
quizNo
sortNoNur bei kind=sort: Karten in Gruppen ziehen
clozeNoNur bei kind=cloze: Lückentext
titleNo
vocabNoNur bei kind=vocab (Vokabeln, Englisch): Karteikarten – vorne deutsch bzw. Emoji/Bild, hinten englisch mit Aussprache. Das Kind dreht die Karten um, sortiert sie in „Kann ich“ und „Nochmal“ (Nochmal-Karten kommen wieder, bis alle sitzen), hört die Aussprache und nimmt sich selbst auf. Übungen über modes: cards, hear-pic (Wort hören, Bild tippen), hear-word (hören und Bild, geschriebenes Wort suchen), pic-word, word-pic. Die Aussprache entsteht beim Speichern automatisch (jedes Wort pro Stimme nur einmal für alle). Ersetzt die ganze Liste – zum Ergänzen vocab_add.
answerNoNur bei kind=answer („Deine Antwort“): wie das Kind antworten darf
speechNoNur bei kind=audio: Vorlesetext für einen Podcast. Wird nur als Entwurf gespeichert; vorgelesen wird erst nach Bestätigung der Lehrkraft (speak_support_item). Ohne den Namen des Kindes.
item_idYes
vocab_addNoNur bei kind=vocab, nur update_support_item: Karten ergänzen (z. B. die nächste Buchseite); ein englisches Wort, das es schon gibt, wird ersetzt
package_idYes
vocab_removeNoNur bei kind=vocab, nur update_support_item: Karten entfernen, per englischem oder deutschem Wort

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed4 schema fields changed
    • changedInput schema / properties / vocab / description
      Previous value: -"Nur bei kind=vocab (Vokabeln, Englisch): Karteikarten – vorne deutsch bzw. Emoji/Bild, hinten englisch mit Aussprache. Das Kind dreht die Karten um, sortiert sie in „Kann ich“ und „Nochmal“ (Nochmal-Karten kommen wieder, bis alle sitzen), hört die Aussprache und nimmt sich selbst auf. Die Aussprache entsteht beim Speichern automatisch (jedes Wort pro Stimme nur einmal für alle). Ersetzt die ganze Liste – zum Ergänzen vocab_add."New value: +"Nur bei kind=vocab (Vokabeln, Englisch): Karteikarten – vorne deutsch bzw. Emoji/Bild, hinten englisch mit Aussprache. Das Kind dreht die Karten um, sortiert sie in „Kann ich“ und „Nochmal“ (Nochmal-Karten kommen wieder, bis alle sitzen), hört die Aussprache und nimmt sich selbst auf. Übungen über modes: cards, hear-pic (Wort hören, Bild tippen), hear-word (hören und Bild, geschriebenes Wort suchen), pic-word, word-pic. Die Aussprache entsteht beim Speichern automatisch (jedes Wort pro Stimme nur einmal für alle). Ersetzt die ganze Liste – zum Ergänzen vocab_add."
    • changedInput schema / properties / vocab / properties / cards / items / properties / image / description
      Previous value: -"Bild statt Emoji: /media/…-Link aus den Materialien oder https (optional)"New value: +"Nur die url, die save_image zurückgibt (/media/…). Zuerst save_image aufrufen (erzeugtes Bild als data, oder ein gefundenes direktes https-Bild als url). Den Pfad nicht erfinden."
    • addedInput schema / properties / vocab / properties / modes
      Added value: +{
      +  "description": "Übungen: cards (Karteikarten), hear-pic (Ton zum Bild), hear-word (Wort finden), pic-word (Bild zum Wort), word-pic (Wort zum Bild). Standard cards, hear-pic, hear-word; leer wird cards",
      +  "items": {
      +    "enum": [
      +      "cards",
      +      "hear-pic",
      +      "hear-word",
      +      "pic-word",
      +      "word-pic"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / vocab_add / items / properties / image / description
      Previous value: -"Bild statt Emoji: /media/…-Link aus den Materialien oder https (optional)"New value: +"Nur die url, die save_image zurückgibt (/media/…). Zuerst save_image aufrufen (erzeugtes Bild als data, oder ein gefundenes direktes https-Bild als url). Den Pfad nicht erfinden."
  2. Changed12 schema fields changed
    • changedInput schema / properties / code / description
      Previous value: -"Nur bei kind=code (Programmieren, Roboter-Puzzle): Das Kind reiht Pfeil-Befehle (hoch, runter, links, rechts) – bei loops auch „Wiederhole nד – aneinander, drückt Start und der Roboter läuft über das Raster: ans Ziel, alle Sterne einsammeln, nicht gegen eine Wand. Oder ein Drachen-Level (dragon statt map): Angriffe so oft einsetzen, dass der Drache genau 0 Leben hat. Beliebig viele Versuche, Tipps nach Fehlversuchen; die Lehrkraft sieht je Level, ob und im wievielten Versuch es geklappt hat. Sanft steigern: erst kurze gerade Wege, dann Kurven, dann Sterne, dann Schleifen mit max_blocks; Drachen-Level als Rechen-Schleifen-Rätsel."New value: +"Nur bei kind=code (Programmieren, Roboter-Puzzle nach Ideen von Robot Karol und Scratch): Das Kind reiht Bausteine aneinander, drückt Start und die Figur läuft über das Raster. Ein Level ist geschafft, wenn alles erfüllt ist, was die Karte verlangt: auf Z stehen (falls da), alle Sterne * eingesammelt, kein Ding D liegt mehr außerhalb eines Zielfelds, jedes Zielfeld M ist belegt oder markiert, kein Feld zu viel markiert. Stufen (stage): start = Pfeile hoch/runter/links/rechts; karol = die Figur schaut in eine Richtung – „Schritt“, „links drehen“, „rechts drehen“ plus „aufheben“/„hinlegen“/„markieren“, wenn die Karte Dinge oder Zielfelder hat; profi = karol plus „Wiederhole nד, „Wenn … dann“ und „Solange …“ mit den Fragen Wand vorne? / Ding hier? / markiert? (auch verneint), Kästen bis zu zwei tief ineinander. Ein eigener Befehl (proc) ist eine benannte Baustein-Folge, die das Kind baut und wie einen Baustein einsetzt. Das Thema (hero, goal, star, wall, thing) tauscht nur die Emojis: Beet bepflanzen (thing 🌱, M-Felder), Müll sammeln (🥫, D-Felder), Schnee räumen (❄️), Pakete sortieren (📦 von D nach M), Mauer bauen (🧱 auf M, wall 🪨), Äpfel ernten (🍎). Oder ein Drachen-Level (dragon statt map): Angriffe so oft einsetzen, dass der Drache genau 0 Leben hat. Beliebig viele Versuche, Tipps nach Fehlversuchen; die Lehrkraft sieht je Level, ob und im wievielten Versuch es geklappt hat. Sanft steigern: erst Pfeile auf kurzen Wegen, dann Kurven und Sterne, dann Schleifen mit max_blocks; Karol: erst Schritt und Drehen, dann aufheben/hinlegen; Profi: Wenn/Solange auf langen Reihen (Wand vorne?) und ein eigener Befehl für Wiederkehrendes (z. B. „Reihe pflanzen“). Drachen-Level als Rechen-Schleifen-Rätsel."
    • changedInput schema / properties / code / properties / goal / description
      Previous value: -"Emoji des Ziels (Standard 🏁), z. B. 🌻, 🐟"New value: +"Emoji des Ziels (Standard 🏁), z. B. 🌻, 🏡"
    • changedInput schema / properties / code / properties / hero / description
      Previous value: -"Emoji der Figur (Standard 🤖), z. B. 🐝, 🐱, 🚀"New value: +"Emoji der Figur (Standard 🤖), z. B. 🐝, 🧑‍🌾, 🦝"
    • addedInput schema / properties / code / properties / levels / items / properties / blocks
      Added value: +{
      +  "description": "Optional: die Bausteine einzeln festlegen statt über stage, z. B. [\"step\",\"turn_left\",\"turn_right\",\"pick\",\"while\",\"if\"]. Aufheben (pick) ist Pflicht, wenn D auf der Karte liegt; hinlegen (put) oder markieren (mark), wenn M da ist.",
      +  "items": {
      +    "enum": [
      +      "up",
      +      "down",
      +      "left",
      +      "right",
      +      "step",
      +      "turn_left",
      +      "turn_right",
      +      "pick",
      +      "put",
      +      "mark",
      +      "repeat",
      +      "if",
      +      "while"
      +    ],
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / code / properties / levels / items / properties / hint / description
      Previous value: -"Tipp nach zwei Fehlversuchen (sonst zeigt classdesk den Anfang des Wegs)"New value: +"Tipp nach zwei Fehlversuchen (sonst zeigt classdesk den Anfang einer Lösung)"
    • changedInput schema / properties / code / properties / levels / items / properties / loops / description
      Previous value: -"Baustein „Wiederhole nד anbieten"New value: +"Baustein „Wiederhole nד anbieten (auch auf Stufe start/karol)"
    • changedInput schema / properties / code / properties / levels / items / properties / map / description
      Previous value: -"Karte, eine Zeile pro Reihe (\\n), höchstens 8×8: R = Start, Z = Ziel, # = Wand, * = Stern (max. 6), . = frei. Z. B. \"R..#\\n#.*.\\n##.Z\". Muss lösbar sein."New value: +"Karte, eine Zeile pro Reihe (\\n), höchstens 8×8: R = Start (schaut nach rechts) oder > < ^ v = Start mit Blickrichtung, Z = Ziel (höchstens eins, kann fehlen), # = Wand, * = Stern (max. 6), D = Ding zum Aufheben, M = Zielfeld (dort hinlegen oder markieren), + = schon markiert (Spur), . = frei. Mindestens ein Ziel (Z, *, D oder M). Z. B. Start \"R..#\\n#.*.\\n##.Z\", Müll \"R.D.D.D\", Beet \"RMMMM\", Pakete \"RD.\\n#.M\\n#.M\" (aufheben und auf M legen; bei D und M zusammen müssen alle D auf M). Muss lösbar sein."
    • changedInput schema / properties / code / properties / levels / items / properties / max_blocks / description
      Previous value: -"höchstens so viele Bausteine (eine Schleife zählt 1 plus ihren Inhalt) – zwingt zum Einsatz von Schleifen"New value: +"höchstens so viele Bausteine (ein Kasten zählt 1 plus seinen Inhalt, der eigene Befehl zählt mit) – zwingt zu Schleifen, Solange oder eigenem Befehl"
    • addedInput schema / properties / code / properties / levels / items / properties / proc
      Added value: +{
      +  "description": "Optional: eigener Befehl (Scratch „Meine Blöcke“) – das Kind baut eine Folge unter diesem Namen und setzt sie im Programm wie einen Baustein ein (zählt bei max_blocks mit, ruft sich nicht selbst auf).",
      +  "properties": {
      +    "do": {
      +      "description": "Optional vorgegebener Anfang, Bausteine wie in blocks (Kästen als {repeat: n | if: \"wall\" | while: \"!wall\", do: [...]})",
      +      "type": "array"
      +    },
      +    "name": {
      +      "description": "z. B. \"Reihe pflanzen\", \"Treppe steigen\"",
      +      "type": "string"
      +    }
      +  },
      +  "type": "object"
      +}
    • addedInput schema / properties / code / properties / levels / items / properties / stage
      Added value: +{
      +  "description": "Stufe (Standard start): welche Bausteine das Level ohne blocks anbietet",
      +  "enum": [
      +    "start",
      +    "karol",
      +    "profi"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / code / properties / levels / items / properties / text / description
      Previous value: -"Auftrag für das Kind, z. B. \"Sammle beide Sterne ein!\""New value: +"Auftrag für das Kind, z. B. \"Sammle den ganzen Müll auf!\" (sonst schreibt classdesk ihn aus der Karte)"
    • addedInput schema / properties / code / properties / thing
      Added value: +{
      +  "description": "Emoji der Dinge zum Aufheben/Hinlegen (Standard 📦), z. B. 🌱, 🥫, ❄️, 🍎, 🧱",
      +  "type": "string"
      +}
  3. First observed

TDQS

A4.6/5.0
Behavior4/5

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

Annotations only supply readOnlyHint=false, destructiveHint=false and openWorldHint=false; the description goes much further by disclosing that quiz, math, cloze, mark, sort, code and vocab replace the ENTIRE content (all questions must be resent), which is exactly the trap an agent would fall into. It does not state what the tool returns or whether the change is reversible/undoable (undo_change exists as a sibling), leaving a small gap; the wholesale-overwrite semantics also sit somewhat uneasily with destructiveHint=false, though that is a nuance rather than a contradiction.

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?

Four sentences, each doing distinct work: what changes, the partial-update rule plus full-replacement warning, the vocab exception, and the kind immutability rule. The most dangerous behavior (content replacement) is front-loaded in sentence two rather than buried.

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 17-parameter tool with deeply nested kind-specific schemas and no output schema, the description covers the semantics an agent most needs: partial updates, whole-content replacement, vocab routing, and kind immutability. Missing is any statement of return value, permission requirements, or how failures behave, which for a mutation tool with only three coarse annotations is a modest but real gap.

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 coverage is already 76%, and the description adds cross-parameter meaning the schema cannot express: which content fields belong to which kind, that kind itself is immutable, and that vocab is replace-all while vocab_add/vocab_remove are the incremental paths. It stops short of explaining the interaction between package_id and item_id or error cases, so it is strong but not exhaustive.

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 a specific verb+resource pair ('Ändert einen Baustein eines Lernpakets') and even names the source of the identifier ('item_id aus list_support'). It enumerates the updatable facets (Titel, Auftrag, Datei/Link, Inhalt) so the agent can distinguish this from add_support_item / remove_support_item without opening the schema.

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?

It states the partial-update rule ('Nur angegebene Felder werden geändert'), routes vocab additions/removals to vocab_add / vocab_remove instead, and explicitly says kind cannot be changed — instead create a new item and remove the old. Both the when-to-use and the when-not-to-use cases are named with concrete alternatives.

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