Skip to main content
Glama

decision_record

Record a final project decision with its rationale, alternatives, and affected paths, so agents do not revisit it. Stores as a Markdown file for later briefs.

Instructions

Record a settled project choice with its rationale, the alternatives considered and the paths it constrains, so no agent decides it again. It is written as one committed Markdown file under .tirith/decisions/ and appears in the brief of later claims on those paths. Use only once the choice is final; for discussion use message_send, and for lessons about code use memory_write. Returns the decision with its permalink.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
agentYesYour stable agent name.
titleYesShort title, the line shown in briefs.
decisionYesWhat was decided, stated so it can be followed.
rationaleNoWhy it was decided.
alternativesNoThe alternatives that were considered and rejected.
affects_pathsNoPaths the decision constrains.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
statusYesok. invalid: bad input.
messageNoHuman-readable detail, on most outcomes other than ok.
decisionNoid, title, decision, rationale, alternatives, affects_paths, recorded_by, recorded_at, and the permalink of its committed file.

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed7 schema fields changedv1.1.2
    • addedInput schema / properties / affects_paths / description
      Added value: +"Paths the decision constrains."
    • addedInput schema / properties / agent / description
      Added value: +"Your stable agent name."
    • addedInput schema / properties / alternatives / description
      Added value: +"The alternatives that were considered and rejected."
    • addedInput schema / properties / decision / description
      Added value: +"What was decided, stated so it can be followed."
    • addedInput schema / properties / rationale / description
      Added value: +"Why it was decided."
    • addedInput schema / properties / title / description
      Added value: +"Short title, the line shown in briefs."
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "description": "Any result may also carry lost, inbox, inbox_more and persist_error; see guide.",
      +  "properties": {
      +    "decision": {
      +      "description": "id, title, decision, rationale, alternatives, affects_paths, recorded_by, recorded_at, and the permalink of its committed file.",
      +      "type": "object"
      +    },
      +    "message": {
      +      "description": "Human-readable detail, on most outcomes other than ok.",
      +      "type": "string"
      +    },
      +    "status": {
      +      "description": "ok. invalid: bad input.",
      +      "enum": [
      +        "ok",
      +        "conflict",
      +        "not_found",
      +        "none",
      +        "invalid",
      +        "cancelled"
      +      ],
      +      "type": "string"
      +    }
      +  },
      +  "required": [
      +    "status"
      +  ],
      +  "type": "object"
      +}
  2. First observedv1.1.1

TDQS

A4.7/5.0
Behavior5/5

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

Beyond the sparse destructiveHint=false annotation, the description discloses important behavior: it writes 'one committed Markdown file under .tirith/decisions/', makes the record appear 'in the brief of later claims on those paths', and returns 'the decision with its permalink.' This gives the agent a clear model of persistence and side effects.

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?

Three sentences cover purpose, storage, side effects, usage timing, alternatives, and return value without redundancy. The core action is front-loaded and every clause earns its place.

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?

The description is complete for an agent to decide when and how to use the tool: it explains the record's format and location, its effect on future claim briefs, the finality requirement, alternatives, and the return value. Given the rich schema and output schema, nothing essential is missing.

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 description coverage is 100%, and each parameter already has a meaningful description, so the baseline is 3. The tool description reinforces the meaning of 'alternatives' and 'affects_paths' but does not add substantive parameter-level semantics beyond what 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?

The description opens with a specific verb and resource: 'Record a settled project choice with its rationale, the alternatives considered and the paths it constrains.' It clearly states what is recorded and why, and distinguishes itself from siblings by naming message_send and memory_write as alternatives for different situations.

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 gives an explicit condition: 'Use only once the choice is final.' It also names concrete alternatives and their use cases: 'for discussion use message_send, and for lessons about code use memory_write.' This leaves no ambiguity about when to invoke this tool instead of a sibling.

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