Skip to main content
Glama

fenbs_update_lesson

Idempotent

Change a lesson by ref. Only the fields passed change; the version before is kept whole. Put each lesson in a group: Process, Technical, Testing, Deploy, or a new name; groupId 0 clears it. status dismissed (with dismissedReason) when it turned out not to matter; new reopens it. A lesson becomes applied only through fenbs_apply_lesson. linkTasks and unlinkTasks add and remove task links without touching the others. Needs permission to change tasks.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
refYes
groupNoPut the lesson in a group: Process, Technical, Testing, Deploy, or a new name. Names are trimmed and matched ignoring case; a new name creates a lesson group.
titleNo
lessonNoWhat we learned -- the point the next person or assistant must not miss.
statusNo
groupIdNoAn existing lesson group id; 0 means No group. Omitted on update keeps the group. Takes precedence over group when both are given.
projectNoA project on this board, by name. Leave it out for the whole board.
categoryNoAn existing board category, kept separately from the lesson group. Empty clears it.
linkTasksNo
unlinkTasksNo
whatHappenedNoWhat happened: the facts, briefly. Name the task, the file or the incident.
doDifferentlyNoWhat to do differently from now on, as concretely as you can.
dismissedReasonNoWhy it was dismissed.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed3 schema fields changed
    • changedInput schema / properties / category / description
      Previous value: -"Optional, e.g. Process, Technical, Testing, Data, Communication -- or the board's own."New value: +"An existing board category, kept separately from the lesson group. Empty clears it."
    • addedInput schema / properties / group
      Added value: +{
      +  "description": "Put the lesson in a group: Process, Technical, Testing, Deploy, or a new name. Names are trimmed and matched ignoring case; a new name creates a lesson group.",
      +  "type": "string"
      +}
    • addedInput schema / properties / groupId
      Added value: +{
      +  "description": "An existing lesson group id; 0 means No group. Omitted on update keeps the group. Takes precedence over group when both are given.",
      +  "minimum": 0,
      +  "type": "integer"
      +}
  2. Added

TDQS

A3.7/5.0
Behavior4/5

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

Annotations already declare non-readOnly, idempotent, non-destructive. The description adds meaningful behavior beyond that: partial update semantics ("Only the fields passed change"), prior-version retention ("the version before is kept whole"), and an authorization requirement ("Needs permission to change tasks"). This is solid added context, though the return shape is unstated.

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?

It is dense but front-loaded, with the core update semantics stated first and per-field behavior following. Every sentence carries operational detail, though the field-by-field clauses make it slightly crowded.

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?

With 13 parameters, no output schema, and 62% schema coverage, the description covers the tricky behavioral aspects (partial update, versioning, group clearing, status transitions, permission needs). Remaining gaps are minor since the schema itself documents most individual fields.

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

Parameters3/5

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

Schema coverage is 62%, so the schema documents most params but leaves gaps. The description reinforces group/groupId precedence and status/link behavior, but says nothing about title, lesson, project, category, whatHappened, or doDifferently. It adds some meaning but does not fully compensate for the coverage gap, so baseline 3 is appropriate.

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?

The description opens with a specific verb+resource ("Change a lesson by ref"), clearly identifying it as a partial-update operation on a lesson. It partially differentiates from siblings by noting that the 'applied' state is reached only via fenbs_apply_lesson, but it does not otherwise distinguish itself from update_item/update_decision. Clear but sibling differentiation is only partial.

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?

It explains field-level semantics well (groupId 0 clears the group, dismissed vs new status, linkTasks/unlinkTasks). However, it gives no guidance on when to use this tool versus add_lesson, delete_lesson, or restore_lesson, so overall tool-selection guidance is only implied.

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