Skip to content
K

mm_record

Record what this session learned into a spec’s ## Recorded block — the durable, append-only substrate under write-back. phase selects the operation: append (write typed, provenance-stamped lines onto a spec), dismiss (record a rejected proposal as a transcript system line so it does not come back next session), read (read the block back with transcript anchors resolved). This is the ONLY path that writes recorded lines: never edit the ## Recorded section directly, because an edit — as opposed to an append — silently turns two machines recording at once from a union into a conflict. Provenance (session_id, agent, model, timestamp, mm-turn:// anchor) is mandatory; a line without it is rejected, not written. Calling append with no spec returns a stated null case rather than dropping the write.

  • Category: Core
  • Source: Built-in
  • Availability: Listed by default
  • Required parameters: 2
  • Total parameters: 11
ParameterTypeRequiredDescription
phasestring (enum: append, dismiss, read)Yesappend | dismiss | read. There is deliberately no edit/reorder/remove phase — recorded lines are append-only.
project_pathstringYesAbsolute path to the project root (the directory containing .mm/).
spec_folderstringNoappend/read: spec folder name, e.g. ‘2026-08-01-write-back-record-format’. Omit when the session has no spec — the call answers with the stated null case.
linesarray of objectNoappend: the lines to write. Each is { kind: decision|finding|constraint|ruled-out, text, provenance: { session_id, agent, model, timestamp, anchor } }. Provenance is mandatory on every line.
session_idstringNodismiss: MM session id whose transcript records the dismissal.
kindstringNodismiss: the dismissed proposal’s kind.
textstringNodismiss: the dismissed proposal’s text, verbatim.
reasonstringNodismiss: why it was rejected (optional — a rejected finding is still information).
anchorstringNodismiss: the proposal’s mm-turn:// anchor, when it had one.
resolve_anchorsbooleanNoread: resolve each line’s transcript anchor (default true). A compacted turn degrades to a stated result rather than dangling.
requesting_ownerstringNoread: owner identity for the transcript owner gate when resolving anchors.
{
"tool": "mm_record",
"arguments": {
"phase": "append",
"project_path": "/Users/you/projects/my-app",
"spec_folder": "example-spec_folder",
"lines": [
"example-line"
]
}
}
  • mm_search - Full-text search across all entity types (specs, features, issues, notes, ide…
  • mm_configure_integration - Configure an external service integration (github, trello, grain, gmail, noti…
  • mm_sync_notion - Bidirectional sync between a Notion database and .mm/specs/ or .mm/notes/. Pu…
  • mm_daily_brief - Generate a structured morning summary with active tasks, blockers, recently c…
  • mm_revert_spec_completion - Revert a spec’s completion status in its parent feature. Tasks stay [x] but t…