Skip to main content
Glama

add_content_block

Adds a structured content block to a block: 'list' (bulleted list + badges), 'text' (paragraph), 'actions' (checklist — steps taken, checkpoints, state of a block WITHOUT any real assignee or due date to track), 'links' (clickable links). ⚠️ Work ASSIGNED to someone, carrying a DUE DATE, or that will have to be worked through to "done" goes into create_tasks (cellId = this block) — the ONLY register visible in the Tasks view; an 'actions' content block does not appear there. This is THE mechanism to attach notes and detailed states to a block; desc stays a one-line summary. ⚠️ VOLUME CAP, knowable ahead of writing: beyond 12 cumulated entries on one card, all content blocks combined, a 'content.card-truncated' finding is raised: the detail is then better spread over several blocks (or moved into a document). The 'text' content blocks (they have no entries) and the synthesized task indicator do NOT count toward this total. The state of THIS card before writing is read in contentBudget {used, available, budget} of get_cell_details; this tool also returns it AFTER writing, so the next call needs no re-read.

Input Schema

NameRequiredDescriptionDefault
noteNoNote under the content block (italic, muted)
textNoFree text (for type='text', supports \n)
typeYes'list' = bulleted list with badges · 'text' = free text block · 'actions' = action checklist (done/status/assignee/due per entry) · 'links' = list of clickable links (url per entry)
titleYesTitle of the content block (displayed in uppercase)
cellIdYesID of the block that receives the content
blockIdYesUnique ID of the content block
entriesNoEntries of the list (for type='list' | 'actions' | 'links')
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 unique du bloc de contenu"New value: +"Unique ID of the content block"
    • changedInput schema / properties / cellId / description
      Previous value: -"ID de la cellule qui reçoit le contenu"New value: +"ID of the block that receives the content"
    • 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: -"Entrées de la liste (pour type='list' | 'actions' | 'links')"New value: +"Entries of the list (for type='list' | 'actions' | 'links')"
    • 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)"New value: +"Note under the content block (italic, muted)"
    • 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: -"Titre du bloc (affiché en uppercase)"New value: +"Title of the content block (displayed in uppercase)"
    • changedInput schema / properties / type / description
      Previous value: -"'list' = liste à puces avec badges · 'text' = bloc texte libre · 'actions' = checklist d'actions (done/status/assignee/due par entrée) · 'links' = liste de liens cliquables (url par entrée)"New value: +"'list' = bulleted list with badges · 'text' = free text block · 'actions' = action checklist (done/status/assignee/due per entry) · 'links' = list of clickable links (url per entry)"
  2. Changed2 schema fields changed
    • 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.8/5.0
Behavior5/5

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

With annotations only declaring write/non-destructive/openWorld=false, the description carries real behavioral weight: a hard volume cap (12 cumulated entries) that triggers a 'content.card-truncated' finding, which items do and do not count toward it, and the fact that contentBudget is returned both by get_cell_details (before) and by this tool (after). This is context the annotations cannot supply.

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 the core action and type list, then the create_tasks routing rule and the volume cap as clearly marked warnings. It is dense and long but nearly every sentence earns its place; minor verbosity in the cap explanation keeps it from a 5.

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?

No output schema exists, yet the description still explains the meaningful return value (contentBudget after writing) and pre-empts the next call. For a non-destructive mutation tool with full schema coverage and annotations, nothing an agent needs to call it correctly is missing.

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 100%, so the baseline is 3; however the description adds behavioral meaning about parameters beyond the schema, notably that 'text' blocks carry no entries and do not count toward the entry cap. It stops short of adding per-parameter syntax or edge-case detail the schema already provides.

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?

States a specific verb ('Adds') and resource ('structured content block'), and enumerates the four block types ('list', 'text', 'actions', 'links') with their behavior. It explicitly differentiates itself from the sibling create_tasks, so an agent can tell them apart without opening either 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?

Names the alternative tool (create_tasks) and the exact condition that routes to it: work assigned to someone, carrying a due date, or tracked to 'done'. It also states this is 'THE mechanism to attach notes and detailed states', giving a positive routing rule as well as the exclusion.

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.