Skip to main content
Glama
FlowState by DialectForge

FlowState by DialectForge

Official

log_work

Log a project decision, code or setup change, problem, reusable learning, or todo with context and evidence to track why work happened and flag conflicts.

Instructions

Record one new decision (a choice and why), change (code or setup), problem (bug or blocker), learning (reusable lesson) or todo in a project. To update todos or problems: manage_todos / manage_problems. Only adds. Review mode or suggested=true may queue it for the user. A change on a shared component alerts linked projects. A decision close to a current one gets a possible-conflict note; act on it. conflicts_with opens a disagreement card. Secrets are refused. Returns {logged, record, note} or {queued_for_review}.

Input Schema

NameRequiredDescriptionDefault
kindYesThe record kind (see the description).
modelNoModel name if known. Never guess.
topicNoShort topic, e.g. API sessions.
sourceNouser_stated, ai_inferred or from_code.
detailsNoWhy, or old and new values. Max 10,000 chars.
projectYesProject name or id. Required.
summaryYesThe record in one short line.
categoryNolearning only: the kind of lesson.
evidenceNoUp to 2: file:line or output: text.
priorityNotodo or problem. Default normal.
replacesNoDecision id this one replaces.
componentNoComponent name; created if missing. Shared ones too.
suggestedNotrue = queue it for the user's review.
conflicts_withNoRecord id this disagrees with.
conflicts_with_typeNoDefault decision.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed10 schema fields changedv2.4.3
    • changedInput schema / properties / component / description
      Previous value: -"Component name (created if missing; change / problem default General); shared ones too."New value: +"Component name; created if missing. Shared ones too."
    • addedInput schema / properties / conflicts_with
      Added value: +{
      +  "description": "Record id this disagrees with.",
      +  "type": "integer"
      +}
    • addedInput schema / properties / conflicts_with_type
      Added value: +{
      +  "description": "Default decision.",
      +  "enum": [
      +    "project",
      +    "component",
      +    "decision",
      +    "change",
      +    "learning",
      +    "problem",
      +    "todo"
      +  ],
      +  "type": "string"
      +}
    • changedInput schema / properties / details / description
      Previous value: -"Why, what was rejected, old / new values. Max 10,000 chars."New value: +"Why, or old and new values. Max 10,000 chars."
    • addedInput schema / properties / evidence
      Added value: +{
      +  "description": "Up to 2: file:line or output: text.",
      +  "items": {
      +    "type": "string"
      +  },
      +  "type": "array"
      +}
    • changedInput schema / properties / model / description
      Previous value: -"Your model name if you know it. Never guess."New value: +"Model name if known. Never guess."
    • changedInput schema / properties / priority / description
      Previous value: -"todo / problem only. Default normal; high and medium are older names."New value: +"todo or problem. Default normal."
    • changedInput schema / properties / replaces / description
      Previous value: -"decision only: id of the decision this replaces."New value: +"Decision id this one replaces."
    • changedInput schema / properties / source / description
      Previous value: -"Where it came from: the user, your inference, or the code."New value: +"user_stated, ai_inferred or from_code."
    • addedInput schema / properties / topic
      Added value: +{
      +  "description": "Short topic, e.g. API sessions.",
      +  "type": "string"
      +}
  2. Changed1 schema field changedv2.4.2
    • changedInput schema / properties / details / description
      Previous value: -"Why, what was rejected, old / new values."New value: +"Why, what was rejected, old / new values. Max 10,000 chars."
  3. Changed4 schema fields changedv2.3.0
    • changedInput schema / properties / component / description
      Previous value: -"Component name, created if missing (change / problem default: General). Shared components work too."New value: +"Component name (created if missing; change / problem default General); shared ones too."
    • changedInput schema / properties / details / description
      Previous value: -"Optional: why, what was rejected, old / new values."New value: +"Why, what was rejected, old / new values."
    • changedInput schema / properties / kind / description
      Previous value: -"Which kind of record (see the tool description)."New value: +"The record kind (see the description)."
    • changedInput schema / properties / suggested / description
      Previous value: -"true = queue it for the user's review instead of saving."New value: +"true = queue it for the user's review."
  4. Changed12 schema fields changedv2.1.0
    • changedInput schema / properties / category / description
      Previous value: -"Learnings only"New value: +"learning only: the kind of lesson."
    • changedInput schema / properties / component / description
      Previous value: -"Optional component name (default 'General')"New value: +"Component name, created if missing (change / problem default: General). Shared components work too."
    • changedInput schema / properties / details / description
      Previous value: -"Optional detail / reason / context"New value: +"Optional: why, what was rejected, old / new values."
    • addedInput schema / properties / kind / description
      Added value: +"Which kind of record (see the tool description)."
    • changedInput schema / properties / model / description
      Previous value: -"Your model name, if you know it (optional; never guessed)"New value: +"Your model name if you know it. Never guess."
    • changedInput schema / properties / priority / description
      Previous value: -"Todos: priority. Problems: severity. critical, urgent, normal (default), low; older names high/medium also work."New value: +"todo / problem only. Default normal; high and medium are older names."
    • changedInput schema / properties / project / description
      Previous value: -"Project name or id. Required for every write."New value: +"Project name or id. Required."
    • changedInput schema / properties / replaces / description
      Previous value: -"Decisions only: id of the earlier decision this one replaces"New value: +"decision only: id of the decision this replaces."
    • changedInput schema / properties / source / description
      Previous value: -"Where it comes from: user_stated, ai_inferred, from_code"New value: +"Where it came from: the user, your inference, or the code."
    • removedInput schema / properties / suggested / default
      Removed value: -false
    • changedInput schema / properties / suggested / description
      Previous value: -"true = put it in the review queue for the user instead of saving it"New value: +"true = queue it for the user's review instead of saving."
    • changedInput schema / properties / summary / description
      Previous value: -"One short line"New value: +"The record in one short line."
  5. First observed

TDQS

A4.8/5.0
Behavior5/5

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

Annotations only say non-readonly, non-destructive, non-idempotent; the description adds several traits the annotations cannot: secrets are refused, changes to shared components alert linked projects, a near-duplicate decision yields a possible-conflict note, and conflicts_with opens a disagreement card. It also names the two possible return shapes, which matters given there is no output schema.

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 purpose and the exclusion, then short declarative fragments for each behavioral rule and the return shapes. Dense and telegraphic in places ('Secrets are refused.'), but no sentence is filler.

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?

For a 15-parameter mutation tool with no output schema, the description still tells the agent what happens (queued vs logged), what side effects to expect, and what the return object looks like. Nothing an agent needs to call it correctly appears to be 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 coverage is 100%, so baseline is 3; the description earns extra by explaining the behavioral effect of specific parameters (suggested queues for review, conflicts_with produces a disagreement card, component changes propagate to linked projects). It does not explain replaces or conflicts_with_type, which the schema covers but only thinly.

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?

Opens with a specific verb and resource plus the exact set of record kinds: 'Record one new decision ... change ... problem ... learning ... or todo in a project.' It also names the sibling tools that handle the cases this tool does not, so an agent can separate log_work from manage_todos/manage_problems without opening a 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?

States the boundary explicitly ('Only adds') and routes the excluded cases to named alternatives ('To update todos or problems: manage_todos / manage_problems'). It also flags the alternate path where nothing is written immediately ('Review mode or suggested=true may queue it').

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