Skip to main content
Glama

update_content_block

Destructive

Updates an existing content block in a block (replacement of the fields provided, entries as a whole). ONE specific action is modified with set_action_status. ⚠️ Since entries is REPLACED entirely, this call can by itself push a card past the cap of 12 entries per card: the response returns contentBudget {used, available, budget} of the card AFTER writing, and get_cell_details returns it beforehand.

Input Schema

NameRequiredDescriptionDefault
noteNoNote under the content block (italic, muted) — null to remove it
textNoFree text (for type='text', supports \n)
typeNoChange the type of the content block
titleNoNew title of the content block (displayed in uppercase)
cellIdYesID of the block carrying the content block
blockIdYesID of the content block to modify
entriesNoREPLACES all the entries of the content block (sent as a whole, no incremental append). ONE action is modified with set_action_status.
colorKeyNoColor of the chips/text in the content block
expectedProjectIdNoUUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed23 schema fields changed
    • changedInput schema / properties / blockId / description
      Previous value: -"ID du bloc de contenu à modifier"New value: +"ID of the content block to modify"
    • changedInput schema / properties / cellId / description
      Previous value: -"ID de la cellule portant le bloc"New value: +"ID of the block carrying the content block"
    • changedInput schema / properties / colorKey / description
      Previous value: -"Couleur des pills/texte dans le bloc"New value: +"Color of the chips/text in the content block"
    • changedInput schema / properties / entries / description
      Previous value: -"REMPLACE toutes les entrées du bloc (envoi en bloc, pas d'ajout incrémental). UNE action se modifie par set_action_status."New value: +"REPLACES all the entries of the content block (sent as a whole, no incremental append). ONE action is modified with set_action_status."
    • changedInput schema / properties / entries / items / properties / assignee / description
      Previous value: -"Personne responsable de l'entrée (nom libre ou ID de personne) — affiché en chip @nom"New value: +"Person responsible for the entry (free-form name or person ID) — shown as an @name chip"
    • changedInput schema / properties / entries / items / properties / badge / description
      Previous value: -"Badge affiché (ex: 'Core', 'Roadmap', 'Envisagé')"New value: +"Displayed badge (e.g. 'Core', 'Roadmap', 'Considered')"
    • changedInput schema / properties / entries / items / properties / badgeType / description
      Previous value: -"Style du badge: 'pending'=jaune, 'future'=violet, 'ref'=gris, 'active'=vert"New value: +"Badge style: 'pending'=yellow, 'future'=purple, 'ref'=gray, 'active'=green"
    • changedInput schema / properties / entries / items / properties / colorKey / description
      Previous value: -"Couleur spécifique de cette entrée"New value: +"Specific color of this entry"
    • changedInput schema / properties / entries / items / properties / complexity / description
      Previous value: -"Chip xs…xl d'une entrée. Ordre de grandeur RELATIF en TEMPS HUMAIN : xs = moins d’une heure · s = quelques heures · m = une demi-journée à un jour · l = quelques jours · xl = à DÉCOUPER. Elle s’estime AVANT la prise du travail ; c’est une estimation, jamais une promesse. Sans valeur = non estimée."New value: +"Chip xs…xl of an entry. RELATIVE order of magnitude in HUMAN TIME: xs = under an hour · s = a few hours · m = half a day to a day · l = a few days · xl = to SPLIT. It is estimated ahead of the pick-up of the work; it is an estimate, not a promise. No value = not estimated."
    • changedInput schema / properties / entries / items / properties / createdAt / description
      Previous value: -"Horodatage de création (ISO 8601), posé PAR LE SERVEUR — toute valeur fournie est ignorée et re-dérivée : une entrée dont le texte existe déjà dans le bloc garde sa date d'origine, une entrée nouvelle est datée de maintenant. La renvoyer telle quelle est inoffensif"New value: +"Creation timestamp (ISO 8601), set BY THE SERVER — any supplied value is ignored and re-derived: an entry whose text already exists in the block keeps its original date, a new entry is dated now. Sending it back as is is harmless"
    • changedInput schema / properties / entries / items / properties / done / description
      Previous value: -"Pour type='actions': action terminée (case cochée + texte barré)"New value: +"For type='actions': action completed (box checked + struck-through text)"
    • changedInput schema / properties / entries / items / properties / due / description
      Previous value: -"Échéance libre ('mi-juillet', '2026-07-15') — affichée en chip 📅"New value: +"Free-form due date ('mid-July', '2026-07-15') — shown as a 📅 chip"
    • changedInput schema / properties / entries / items / properties / labels / description
      Previous value: -"Étiquettes libres de l'utilisateur (pastilles colorées). Distinct de `badge`, qui est unique"New value: +"Free-form labels of the user (colored chips). Distinct from `badge`, which is unique"
    • changedInput schema / properties / entries / items / properties / priority / description
      Previous value: -"Priorité fixe 4 niveaux (chip ‼/↑/↓, 'normal' = aucun chip)"New value: +"Fixed 4-level priority (chip ‼/↑/↓, 'normal' = no chip)"
    • changedInput schema / properties / entries / items / properties / rank / description
      Previous value: -"Clé de tri MANUELLE du backlog (flottant, inséré entre deux voisins). Composée par l'utilisateur — elle se renvoie telle quelle, sans arrondi ni réinvention"New value: +"MANUAL sort key of the backlog (float, inserted between two neighbors). Composed by the user — it is sent back as is, with no rounding or reinvention"
    • changedInput schema / properties / entries / items / properties / status / description
      Previous value: -"Pour type='actions': état de l'action (chip coloré: todo=gris, doing=jaune, done=vert, blocked=rouge)"New value: +"For type='actions': state of the action (colored chip: todo=gray, doing=yellow, done=green, blocked=red)"
    • changedInput schema / properties / entries / items / properties / text / description
      Previous value: -"Texte de l'entrée"New value: +"Entry text"
    • changedInput schema / properties / entries / items / properties / url / description
      Previous value: -"Pour type='links' (ou toute entrée): rend le texte cliquable vers cette URL"New value: +"For type='links' (or any entry): makes the text a clickable link to this URL"
    • changedInput schema / properties / expectedProjectId / description
      Previous value: -"UUID du projet visé par CET appel. Cible RÉELLEMENT ce projet au lieu du projet de session. Refusé sans rien modifier si l'accès n'est pas accordé."New value: +"UUID of the project targeted by THIS call. ACTUALLY targets this project instead of the session project. Refused without changing anything if access is not granted."
    • changedInput schema / properties / note / description
      Previous value: -"Note sous le bloc (italic, muted) — null pour la retirer"New value: +"Note under the content block (italic, muted) — null to remove it"
    • changedInput schema / properties / text / description
      Previous value: -"Texte libre (pour type='text', supporte \\n)"New value: +"Free text (for type='text', supports \\n)"
    • changedInput schema / properties / title / description
      Previous value: -"Nouveau titre du bloc (affiché en uppercase)"New value: +"New title of the content block (displayed in uppercase)"
    • changedInput schema / properties / type / description
      Previous value: -"Changer le type du bloc"New value: +"Change the type of the content block"
  2. Changed3 schema fields changed
    • changedInput schema / properties / entries / description
      Previous value: -"REMPLACE toutes les entrées du bloc (envoi en bloc, pas d'ajout incrémental). Pour modifier UNE action, préférer set_action_status."New value: +"REMPLACE toutes les entrées du bloc (envoi en bloc, pas d'ajout incrémental). UNE action se modifie par set_action_status."
    • changedInput schema / properties / entries / items / properties / complexity / description
      Previous value: -"Chip xs…xl d'une entrée. Ordre de grandeur RELATIF en TEMPS HUMAIN : xs = moins d’une heure · s = quelques heures · m = une demi-journée à un jour · l = quelques jours · xl = à DÉCOUPER. Pose-la AVANT la prise du travail ; c’est une estimation, jamais une promesse. Sans valeur = non estimée."New value: +"Chip xs…xl d'une entrée. Ordre de grandeur RELATIF en TEMPS HUMAIN : xs = moins d’une heure · s = quelques heures · m = une demi-journée à un jour · l = quelques jours · xl = à DÉCOUPER. Elle s’estime AVANT la prise du travail ; c’est une estimation, jamais une promesse. Sans valeur = non estimée."
    • changedInput schema / properties / entries / items / properties / rank / description
      Previous value: -"Clé de tri MANUELLE du backlog (flottant, inséré entre deux voisins). Composée par l'utilisateur — la renvoyer telle quelle, ne jamais l'arrondir ni la réinventer"New value: +"Clé de tri MANUELLE du backlog (flottant, inséré entre deux voisins). Composée par l'utilisateur — elle se renvoie telle quelle, sans arrondi ni réinvention"
  3. First observed

TDQS

A4.2/5.0
Behavior5/5

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

Annotations only say destructiveHint=true; the description explains the actual destructive mechanism (entries fully REPLACED, no incremental append) and the concrete failure mode (a card can be pushed past the 12-entry cap by this call alone). It also discloses what the response returns (contentBudget {used, available, budget} after writing), which no structured field carries.

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?

Three tight sentences with the replacement semantics front-loaded and the cap warning flagged. Minor waste in the mid-sentence 'ONE specific action is modified with set_action_status', which reads awkwardly separated from its routing purpose.

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 destructive mutation with 9 params and no output schema, the description covers the two things that matter most: replacement semantics and the entry-cap hazard plus how to check before/after. It omits permission/auth requirements and what happens to entries omitted from the payload (removed vs preserved), which an agent would still need to infer.

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 100%, so baseline is 3; the description still adds meaning by clarifying that entries is a whole-array replacement rather than a merge and that the card-level budget constrains that parameter. It does not add anything about the other parameters (type, note, expectedProjectId), which are left to the schema.

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

Purpose4/5

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

Names a specific verb and resource (update an existing content block) and immediately qualifies the update semantics — only supplied fields are replaced, but entries is sent as a whole. This is concretely distinguishable from add_content_block / delete_content_block. It doesn't explicitly name those siblings, so it falls short of a 5.

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?

Explicitly routes two adjacent needs to other tools: use set_action_status to change ONE action, and use get_cell_details to read the budget BEFORE writing. That is real when-to-use guidance, not inference. No exclusion criteria against add_content_block or move_content_block, so not a 5.

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.