Skip to main content
Glama

Record the brief

record_brief
Destructive

Records a problem's goal, assumptions, and criteria as its brief, creating or replacing the case file so stale requirements are detected before optimization.

Instructions

Record the brief of a problem YAML: what the user wants and the assumptions that you state. Say it, then go on.

A case is one problem YAML with the STL files it names, one brief and many runs. This call makes the case (the files <yaml stem>.case.json and <yaml stem>.case-log.jsonl beside the YAML) or replaces its brief. The case keeps the SHA-256 of the YAML and of each region file with the brief, and the values of the method keys of the YAML. If a file or a requirement key changes later, case_status and run_topopt say that the brief is stale and name it. For a case with no brief or a stale brief, run_topopt returns awaiting_user with an override. A change of a method setting (for example settings.solver or settings.voxel_size) is a fact and not stale: run_topopt goes on, and brief_facts names the key with both values, so that you can report it.

yaml_path: the problem YAML in the work folder. A YAML outside the work folder (an example in the code folder, for example) gets no case file: the reply gives the fact and the options. A YAML in the code folder of a source checkout is recorded, with a fact and an option (a work folder is the better place). text: the brief in plain words: the goal, the loads and where they come from, the mounting, the material, the critical sizes. assumptions: a list of {"text": ..., "origin": ...}. origin is user (the user said it), inferred (you concluded it) or default (a default value). The YAML assumptions list is a list of strings that run.json copies; the reply names the texts that differ from the brief. criteria: what the result has to show, in the same form (optional).

Input Schema

NameRequiredDescriptionDefault
textYes
criteriaNo
yaml_pathYes
assumptionsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.5.0

TDQS

A4.7/5.0
Behavior5/5

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

With destructiveHint=true already declared, the description still earns its place by naming the two files written (<yaml stem>.case.json and <yaml stem>.case-log.jsonl) beside the YAML, saying the brief is replaced rather than duplicated, and disclosing what is fingerprinted (SHA-256 of YAML and region files, method key values). It goes further to explain staleness propagation to case_status and run_topopt, and the deliberate exception that method-setting changes are facts, not staleness. That is substantial behavior beyond the annotations and no contradiction with them.

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?

The purpose is front-loaded in the first sentence and the per-parameter block is well organized. It is on the long side, though: the brief_facts method-key aside and the 'you can report it' tail add words without changing how the agent calls the tool, and one clause ('say that the brief is stale and name it') is slightly clipped.

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 mutating tool with 0% schema coverage, four parameters, no output schema and only hint-level annotations, this covers everything an agent needs: what is written, where, what replaces what, all four parameter meanings, path edge cases, and how the result feeds later checks. Nothing essential is left dangling.

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

Parameters5/5

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

Schema coverage is 0% and all four parameters are undocumented in the schema, so the description carries the full load — and does. yaml_path gets its work-folder constraint and edge cases, text gets its expected content (goal, loads, mounting, material, critical sizes), assumptions gets the {text, origin} shape with the three origin values user/inferred/default spelled out, and criteria is noted as optional with 'same form.' That is meaning the schema cannot supply, since its items are just additionalProperties:true objects.

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 first line gives a specific verb and resource — record the brief of a problem YAML — and scopes it to 'what the user wants and the assumptions that you state.' It then defines the case concept and names the sibling tools that consume the brief (case_status, run_topopt, brief_facts), so an agent can tell exactly where this fits among 30 siblings.

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?

It says when the call creates a case versus replaces a brief, what happens for a YAML outside the work folder (no case file, reply gives facts and options), and what a source-checkout YAML gets. It also states the downstream consequence — run_topopt returns awaiting_user with an override when the brief is missing or stale. What it does not do is tell the agent when to prefer this over a sibling first step (e.g. check_problem or show_problem) before recording.

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