minutes

Agent Reference

For agents

If you are an LLM helping a user install or query Minutes, start here. Setup, tool surface, output format, and constraints are all on this page. For the full generated index, see llms.txt.

01What Minutes is

Minutes records meetings and voice memos, transcribes them locally with whisper.cpp, and saves structured markdown. Speakers are identified with pyannote-rs. No audio leaves the machine.

Output goes to ~/meetings/ as plain files with YAML frontmatter. Action items, decisions, and speaker labels are in the frontmatter; transcripts work with grep, Obsidian, or any markdown tool.

The MCP server (26 tools, 7 resources, 6 prompt templates) is the main agent interface. Any MCP-compatible client can search, record, and query through it.

02Install the MCP server

Add this to the MCP configuration for Claude Desktop, Claude Code, Codex, Gemini CLI, or any MCP client. No Rust toolchain required.

MCP config
{
  "mcpServers": {
    "minutes": {
      "command": "npx",
      "args": ["minutes-mcp"]
    }
  }
}

After the first connection, the server auto-installs the CLI binary. The user then runs minutes setup --model small to download the whisper model (466 MB). Optional: minutes setup --diarization for speaker identification (~34 MB).

03Choose your surface

Minutes has four entry points. Recommend the one that matches the user's environment. This matrix is source-backed so the install steps stay aligned with the docs index and generated agent artifacts.

MCP server

When: User has Claude Desktop, Codex, Gemini CLI, or any MCP client.

npx minutes-mcp

No Rust needed. Search, browse, and dashboard tools work with zero setup. Recording and transcription need the CLI binary on PATH or to be auto-installed on first use.

Best for: Best for agent-first search, recall, and meeting-memory workflows.

CLI

When: User wants terminal-first recording, search, import, and vault sync.

brew tap silverstein/tap && brew install minutes

Also available via cargo install minutes-cli. Requires Rust + cmake for source builds. Linux needs libasound2-dev and libpipewire-0.3-dev.

Best for: Best for local operator workflows and scripting.

Claude Code plugin

When: User works in Claude Code and wants meeting lifecycle skills and proactive hooks.

claude plugin marketplace add silverstein/minutes

18 skills (brief, prep, record, tag, debrief, mirror, weekly, graph) plus a meeting-analyst agent and SessionStart/PostToolUse hooks.

Best for: Best for workflow guidance, prep, debrief, and meeting coaching.

Desktop app

When: User wants a menu bar app with one-click recording, Recall, and artifact drafting.

brew install --cask silverstein/tap/minutes

Tauri v2, macOS only today. Includes command palette, dictation hotkey, live mode toggle, and auto-updates from GitHub Releases.

Best for: Best for first recording, live capture, and post-meeting artifact work.

04MCP tool surface

26 tools grouped by function. Full reference with stable anchor links: /docs/mcp/tools (also available as raw markdown).

Recording

start_recordingStart capturing audio from the default input device.
stop_recordingStop the current recording and trigger transcription.
get_statusCheck whether a recording or live session is active.
list_processing_jobsList background transcription jobs for recent recordings.

Search and recall

list_meetingsList recent meetings and voice memos.
get_meetingRetrieve the full transcript and frontmatter of a specific meeting.
search_meetingsFull-text search across all meeting transcripts.
research_topicCross-meeting research: decisions, follow-ups, and mentions of a topic.

People and relationships

get_person_profileBuild a profile for a person across all meetings.
relationship_mapContacts with relationship scores and losing-touch alerts.
track_commitmentsOpen and stale commitments, optionally filtered by person.
consistency_reportFlag contradicting decisions and stale commitments.

Insights

get_meeting_insightsStructured insights (decisions, commitments, questions) with confidence filtering.
ingest_meetingExtract facts from a meeting into the knowledge base.
knowledge_statusCurrent state of the knowledge base.

Live and dictation

start_live_transcriptStart real-time transcription with per-utterance JSONL output.
read_live_transcriptRead utterances from the active session with cursor or time window.
start_dictationSpeak to clipboard and daily notes.
stop_dictationStop dictation mode.

Notes and processing

add_noteAdd a timestamped note to the current recording or an existing meeting.
process_audioProcess an audio file through the transcription pipeline.
open_dashboardOpen the interactive meeting dashboard in the browser.

Voice and speaker ID

list_voicesList enrolled voice profiles for speaker identification.
confirm_speakerConfirm or correct speaker attribution in a meeting transcript.

Integration

qmd_collection_statusCheck if the meetings directory is registered as a QMD collection.
register_qmd_collectionRegister the meetings directory as a QMD collection.
05Output format

Every meeting saves as markdown with YAML frontmatter. The frontmatter is the structured data. Action items and decisions are queryable through MCP tools and the CLI.

Meeting file
---
title: Q2 Pricing Discussion
type: meeting
date: 2026-03-17T14:00:00
duration: 42m
attendees: [Alex K., Jordan M.]
action_items:
  - assignee: mat
    task: Send pricing doc
    due: Friday
    status: open
decisions:
  - text: Run pricing experiment at monthly billing
    topic: pricing
speaker_map:
  SPEAKER_0: mat
  SPEAKER_1: alex
---

## Summary
- Agreed to test monthly billing with next three signups
- Alex will review retention data before next pricing sync

## Transcript
[SPEAKER_0 0:00] Let's talk about the pricing...
[SPEAKER_1 4:20] Monthly billing makes more sense...

Meetings go to ~/meetings/. Voice memos go to ~/meetings/memos/. Both paths are configurable. File permissions are 0600 (owner read/write only).

06Common agent tasks

User asks what was said about a topic

  1. 1.Call search_meetings with the topic as query.
  2. 2.If multiple results, call get_meeting on the most relevant match.
  3. 3.Summarize from the transcript, citing speaker labels and timestamps.

User asks about open action items

  1. 1.Call list_meetings to get recent meetings.
  2. 2.Read the action_items array from each meeting's frontmatter.
  3. 3.Filter for status: open. Group by assignee if helpful.

User wants to record a meeting

  1. 1.Call start_recording. Optionally pass title and context.
  2. 2.When done, call stop_recording. Transcription runs in the background.
  3. 3.Use list_processing_jobs to check progress if the user asks.

User asks about a person across meetings

  1. 1.Call get_person_profile with the person's name.
  2. 2.For deeper context, call track_commitments filtered to that person.
  3. 3.Call relationship_map if the user wants a broader view of all contacts.

User wants real-time coaching during a meeting

  1. 1.Call start_live_transcript to begin streaming.
  2. 2.Poll read_live_transcript with a cursor to get new utterances.
  3. 3.When the meeting ends, call stop_recording or the session times out.
07Constraints

Minutes does not join video calls, capture screen shares, or act as a meeting bot. It records from the local microphone or processes audio files after the fact.

Transcription quality depends on the whisper model size and audio clarity. The small model (466 MB) is recommended. The tiny model is faster but misses quiet speech and works poorly with accented audio.

Speaker diarization is optional and requires a one-time model download. Without it, all speech is attributed to a single speaker.

Summarization requires either an active Claude session (recommended), a local LLM via Ollama, or a Mistral API key. Without any of these, Minutes still transcribes and extracts structured data from frontmatter.

08Reference