KUROKOTO LAB
Minutes Ago Guide — Chapter 7 of 9

Agents and Shortcuts

Get transcripts, audio, minutes and saved recordings out through AI agents on this Mac (such as Claude), Shortcuts, or the command-line tool of the direct version, start, pause and stop meetings, add markers and screenshots, and set keys that work from any app. For advanced users.

AI agents on this Mac (such as Claude) and Shortcuts can read the transcript of live audio (the audio not saved yet), the transcript with speakers, the audio and minutes, start, pause, resume and stop meetings, save recordings and read them, and add markers and screenshots. This is a feature for advanced users.

Off by default

Agent access runs only when you turn on Allow AI agents (MCP on this Mac) in Settings › Agents. The setting stays on across restarts. Before you buy, the first time you turn it on, the app explains once how agent requests use free tries.

How an agent connects depends on the version. The Mac App Store version doesn’t listen on the network: the agent starts Minutes Ago’s own executable as its MCP server. The direct version, downloaded from this website, runs an HTTP MCP server on 127.0.0.1 with a token. The copy buttons in Settings › Agents always copy the configuration for the version you have.

The Agents pane of the Settings window in the App Store version (the sidebar has eight panes, with Models): Allow AI agents (MCP on this Mac) is on, “Ready for MCP clients on this Mac” and the last connection below it (“Last: 13:37:45 · mcp-client 1 · get_buffer_status · 200”), the Copy configuration for Claude, Copy Claude Code command and Install shortcuts… buttons, and the note “MCP clients set up with the configuration above can read transcripts and export audio, from live audio and saved recordings. Only apps on this Mac can connect.” There is no Advanced section

What turning it on does

App Store version

  • Minutes Ago doesn’t listen on any network port. An MCP client such as Claude Code or Claude Desktop starts Minutes Ago’s own executable with the argument mcp (/Applications/MinutesAgo.app/Contents/MacOS/MinutesAgo mcp) as a stdio MCP server (server name minutes-ago). It shows no window and records nothing: it passes each request on to Minutes Ago and ends when the client closes it.
  • It reaches Minutes Ago through a connection point (a socket) inside the app’s container, ~/Library/Containers/com.kurokoto.minutesago/Data/mcp.sock. The connection point exists only while agent access is on, and is removed when you turn it off or quit Minutes Ago. It accepts requests only from programs of the same user on this Mac that hold the token. The executable reads the token from this Mac’s Keychain itself, so the token never appears in the configuration. Only apps on this Mac can connect.
  • The status line in Settings › Agents reads “Ready for MCP clients on this Mac”. When it is off, it reads “Off”; when the connection point can’t be opened, “Unavailable: …” (for example on a Mac whose user name, the name of the home folder, is 40 bytes or more in UTF-8: the path of the connection point would exceed the macOS limit).
  • While agent access is off, every request is answered with the error “Agent access is off. Turn on “Allow AI agents” in Minutes Ago › Settings › Agents.“ Turn it on, and the next request goes through; the client doesn’t need to restart.
  • If Minutes Ago isn’t running, the first request opens it (without bringing it to the front) and waits up to 15 seconds for it.

Direct version

  • An MCP server (Streamable HTTP, server name minutes-ago) listens on port 48151 of this Mac’s 127.0.0.1. The endpoint is http://127.0.0.1:48151/mcp. Other machines can’t connect.
  • If 48151 is taken by another app, it tries 48152 to 48160 in turn. The status line in Settings › Agents (“Listening on 127.0.0.1:48151”) shows the actual port. When it is off, it reads “Off”; when it can’t listen, “Unavailable: …”.
  • Connecting requires a token. The token is created the first time you turn agent access on and stored in this Mac’s Keychain.
  • The Host and Origin of each request are checked; anything not addressed to 127.0.0.1 or localhost on this port is refused (HTTP 403). A missing or wrong token is also 403.

Both versions

  • Settings › Agents shows the latest connection (“Last: time · client · tool · status”), or “No connections yet”.

Minutes Ago itself sends nothing off the Mac. An agent you connect, however, may send that data to outside services. You decide which agents to connect.

Registering with Claude (App Store version)

First turn on agent access in Settings › Agents and check that the status reads “Ready for MCP clients on this Mac”. No token is needed.

Claude Code

  1. Click Copy Claude Code command in Settings › Agents.
  2. Run the copied command in Terminal. It looks like this:
claude mcp add minutes-ago -- "/Applications/MinutesAgo.app/Contents/MacOS/MinutesAgo" mcp
  1. By default it is registered for the current project only. Add -s user to use it in all projects.
  2. In Claude Code, open /mcp and check that minutes-ago is connected and shows fourteen tools.

Claude Desktop

  1. Click Copy configuration for Claude in Settings › Agents. This JSON is copied:
{
  "mcpServers" : {
    "minutes-ago" : {
      "args" : [ "mcp" ],
      "command" : "/Applications/MinutesAgo.app/Contents/MacOS/MinutesAgo"
    }
  }
}
  1. In Claude Desktop, open claude_desktop_config.json with Settings › Developer › Edit Config, and add the minutes-ago entry to mcpServers.
  2. Restart Claude Desktop and check that the Minutes Ago tools appear in the tool list.
  • The path is where Minutes Ago was when you copied it (usually /Applications/MinutesAgo.app). If you move the app, copy the configuration again and re-register.
  • Claude’s custom connectors (added by URL) can’t start a program on this Mac. Register through the config file instead.
  • The JSON uses the same mcpServers shape as Claude Code’s .mcp.json and claude mcp add-json.

Registering with Claude (direct version)

First turn on agent access in Settings › Agents and check that the status reads “Listening on 127.0.0.1:48151”. The direct version can also register its command-line tool instead (below).

Claude Code

  1. Click Copy Claude Code command in Settings › Agents.
  2. Run the copied command in Terminal. It looks like this (<token> is your actual token):
claude mcp add --transport http minutes-ago http://127.0.0.1:48151/mcp --header "Authorization: Bearer <token>"
  1. By default it is registered for the current project only. Add -s user to use it in all projects.
  2. In Claude Code, open /mcp and check that minutes-ago is connected and shows fourteen tools.

Claude Desktop

  1. Click Copy configuration for Claude in Settings › Agents. This JSON is copied:
{
  "mcpServers" : {
    "minutes-ago" : {
      "headers" : { "Authorization" : "Bearer <token>" },
      "type" : "http",
      "url" : "http://127.0.0.1:48151/mcp"
    }
  }
}
  1. In Claude Desktop, open claude_desktop_config.json with Settings › Developer › Edit Config, and add the minutes-ago entry to mcpServers.
  2. Restart Claude Desktop and check that the Minutes Ago tools appear in the tool list.
  • Some versions of Claude Desktop may not accept an HTTP server in the config file. In that case, use a bridge between stdio and HTTP (for example mcp-remote, which needs Node.js).
  • Claude’s custom connectors (added by URL) connect from the cloud, so they are not expected to reach 127.0.0.1 on this Mac. Register through the config file instead.
  • The JSON uses the same mcpServers shape as Claude Code’s .mcp.json and claude mcp add-json.

An example request: “Use minutes-ago to get the transcript with speakers for the last 30 minutes and write the minutes.”

The tools of the MCP server have been tested with the developer’s own MCP client. Connecting from Claude Desktop and Claude Code has not been tested yet.

The fourteen tools

Five tools read live audio (the audio not saved yet), eight handle meetings, saved recordings and markers, and one adds a screenshot.

For the tools that take a range, give it in one of two ways. Giving both, or neither, is an error.

  • last_minutes — the last N minutes (more than 0, up to 1440).
  • start (ISO 8601, with a UTC offset) and an optional end (defaults to now). A range longer than 24 hours, or one that ends before it starts, is an error.

The range is trimmed to the live audio kept; if it doesn’t overlap it at all, that is an error. track is both (default; both tracks merged in time order), microphone or app. Unknown arguments are errors.

Live audio

Tool Arguments Returns
get_buffer_status none The range of live audio kept, recording state, tracks (microphone device, the App Audio app) and their transcription state, number of lines, spoken language, export folder, minutes engine and why it can’t be used, the meeting in progress (with paused, paused_seconds and active_seconds), where live audio is kept (liveAudioStorage: memory or disk) and the license line (free tries left)
get_transcript range, track The timestamped transcript ([HH:mm:ss] speaker: text), with the replacement dictionary applied — the same as Copy Text and exports. When an app is recorded, lines without a speaker are “Me” and “Others”
get_speaker_transcript range, track, format (markdown default / json / text / vtt / srt), refresh The transcript with speaker labels: S1, S2, … for app audio, M1, M2, … for the microphone, or the names you gave. Every track with lines is identified on its own. Runs speaker identification first when many lines have no speaker, when unlabeled lines remain at the end of the range, or when refresh is true
export_audio range, track, format (m4a default / wav) Absolute paths of the files written to the export folder. With app audio, … mic.m4a and … app.m4a
generate_minutes range The minutes in Markdown, with the default provider and minutes preset in Settings › Meeting Minutes

Meetings, saved recordings and markers

Tool Arguments Returns
start_meeting name, screenshot_interval (3 / 5 / 10 / 20 / 30 / 60 seconds; omitted or 0 = no screenshots), screenshot_app (the bundle ID of the app to capture; defaults to the App Audio app), and for this meeting only: language (BCP 47, such as en-US), app_audio (a bundle ID or none), microphone (the device’s name or none), preset (a name from Settings › Recording › Presets). All optional The meeting that started, its spoken language, app audio and microphone, and a warning if something is missing. Never asks for the Screen Recording permission: without it, the meeting starts without screenshots and says so
stop_meeting discard (default false) Saves the meeting as a recording and returns its id, folder and files. With discard, ends it without saving
pause_meeting none Pauses the meeting in progress: nothing is recorded and the meeting’s clock stops until resume_meeting. Returns the meeting, in the same shape as in get_buffer_status. An error when there is no meeting, it is already paused or it is being saved
resume_meeting none Resumes the paused meeting: recording starts again and its clock goes on. Returns the meeting, with the time paused in all. An error when the meeting is not paused
save_recording range, name, track (both / microphone) Saves a range of live audio as a recording (not in the export folder); returns the same as stop_meeting
list_recordings limit (1 to 200, default 20) The saved recordings, newest first, with their ids and source: meeting, range, agent (save_recording) or file (imported from an audio file)
get_recording id (required), format (markdown default / text / json / vtt / srt), include_markers (default true) The transcript of one saved recording with its markers, and the paths of its folder, audio, minutes and screenshots. The transcript is the one shown in the app (the current model’s). The JSON also has transcription_model (the model of that transcript, or live for the one made while recording) and transcripts (the transcripts the recording keeps, one per model). For a recording imported from an audio file (source file), audio.microphone is the imported audio; it has no lines until Minutes Ago has transcribed it
add_marker name Adds a marker at the current moment. An error when not recording, or while the meeting is paused

Screenshots

Tool Arguments Returns
add_screenshot none Takes a screenshot of the meeting’s app now and keeps it, even if the screen has not changed. Returns its time, the path of the saved file and the number of screenshots in the meeting. No image is returned (read the file at the path). Works only during a meeting with screenshots, while recording (not while the meeting is paused)
  • start_meeting values given for this meeting only are used until the meeting is stopped (saved or discarded); then your settings apply again. Arguments given with preset win over the preset’s values.
  • While a meeting is paused, nothing is recorded (not even in live audio), its clock stops, and it stays paused after Minutes Ago restarts. stop_meeting saves it as it is. The saved recording has the markers “Meeting paused” and “Meeting resumed”. The meeting bar, the menu, a key from any app and the Shortcuts actions pause it the same way.
  • vtt and srt return only the subtitle file itself, without a header, so you can save the result as a .vtt or .srt file. Subtitles are timed from the start of the range (for get_speaker_transcript) or of the recording (for get_recording).
  • The paths returned by stop_meeting, save_recording, list_recordings, get_recording and add_screenshot are inside Minutes Ago’s container. They are managed by Minutes Ago; read them, don’t change them.
  • There are no tools that import audio files, delete saved recordings, export them, transcribe them again or choose a transcription model; do those in the app (Transcription and Models). When a range of live audio is transcribed again in the app, get_transcript and get_speaker_transcript return the new lines. Other models’ transcripts of a saved recording can’t be read through agents (only the one shown). Agents also can’t read or change the keys from any app.
  • export_audio fails if no export folder has been chosen. Choose one in Settings › Library › Export folder, or export once from the app first.
  • Speaker identification and minutes return only when finished; no progress is reported. Measured on the development Mac (synthetic meeting, last 30 minutes), the transcript with speakers took about 12 seconds and minutes about 101 seconds. Identifying speakers on both tracks takes about twice as long as on one. If the client’s tool timeout is shorter than that, the call fails.
  • If several speaker identification or minutes requests arrive at once, each waits for the previous one to finish.
  • If you change the range and identify again, S1 and S2 (or M1 and M2) may swap (named speakers keep their names).
  • Agent requests and their free tries are covered in What agents can use for free below.

With a provider that sends off the Mac

When the default minutes provider sends text off this Mac (OpenAI, Anthropic, Google Gemini or an OpenAI-compatible server; Apple Private Cloud Compute is coming later), generate_minutes never shows the confirmation. It runs only if you have chosen “Don’t show again” for that destination in the app; otherwise it returns an error with the reason (Speakers and Minutes). Screenshots are never sent through agents (text only).

What agents can use for free

The same limits as in the app apply (what is free).

  • Free, and not counted: turning agent access on, get_buffer_status, get_transcript for the last 30 minutes, app audio lines included (speaker names are left out; the header says so), start_meeting, pause_meeting, resume_meeting, stop_meeting with discard, list_recordings, get_recording (the recording was paid for when it was saved), add_marker and add_screenshot.
  • One free try each, until you get Pro (a license in the direct version): get_transcript older than 30 minutes, get_speaker_transcript, export_audio, generate_minutes, and saving a recording (stop_meeting, save_recording). get_recording uses one try once if speaker names were added after the recording was saved.
  • The response tells the agent how many are left. With none left, or for a range the free version can’t take out, the tool returns an error instead of quietly shortening the range.

Regenerating the token, and stopping

  • Regenerate token (direct version only) under Advanced in Settings › Agents creates a new token. Existing configurations stop working (403), so copy the configuration or the Claude Code command again and re-register. The App Store version has no Advanced section and no Regenerate token: its configuration contains no token.
  • Stop by turning off Allow AI agents (MCP on this Mac). In the App Store version, the connection point is removed and registered clients get the “Agent access is off” error until you turn it on again. In the direct version, the server stops listening.
  • In the direct version, if the port has moved to 48152 or later, the registered URL no longer matches either. Copy the configuration again.

Shortcuts

The operations are also available as actions in the Shortcuts app. Search for them in the action list, or choose Minutes Ago in the list of apps.

Action Parameters (default) Result
Get Buffer Status none Text
Get Transcript Minutes (30), Track (Microphone and app audio), Start / End (optional) Text
Get Transcript with Speakers Minutes (30), Format (Markdown; also JSON, plain text, WebVTT, SRT), Track, Identify Again (off), Start / End Text
Export Audio Minutes (30), Format (M4A (AAC)), Track, Start / End Audio files (the contents of the files written to the export folder)
Generate Minutes Minutes (30), Start / End Markdown text
Add Marker Name (optional) None (an error when not recording)
Start Meeting Name, Screenshots Every (0 = none), App, and for this meeting only: Spoken Language, App Audio, Microphone, Preset (all optional) Text
Stop Meeting Discard (off) Text (the saved recording)
Save Recording Minutes (30), Start / End, Name (optional) Text (the saved recording)
List Recordings Limit (20) Text
Get Recording Id (required), Format (Markdown; also plain text, JSON, WebVTT, SRT) Text (the transcript, with markers)
Add Screenshot none The path of the saved screenshot
Pause Meeting none Text (an error when there is no meeting or it is already paused)
Resume Meeting none Text (an error when the meeting is not paused)
  • Setting Start uses a time range instead of the last minutes. Leaving End empty means up to now.
  • Export Audio also needs an export folder. WAV gets large (hundreds of MB for 30 minutes); for large audio, the agent access tool export_audio is better suited (it returns file paths).
  • The actions go through the same checks as the agent tools: the same free range and free tries, the same handling of providers that send off the Mac, and Start Meeting and Add Screenshot never ask for the Screen Recording permission. Results don’t include the number of free tries left.
  • Add Marker adds a marker at the current moment of the recording. When Minutes Ago is not recording, it fails with “Not recording. Markers can be added while Minutes Ago is recording.”
  • Nine of them can also be used from Siri and Spotlight (App Shortcuts), for example “Add a marker in Minutes Ago” and “Start a meeting in Minutes Ago”. List Recordings, Get Recording, Add Screenshot, Pause Meeting and Resume Meeting are actions only.
  • The first time each shortcut outputs a result, the Shortcuts app asks whether that shortcut may output it (a privacy prompt, once per shortcut).

The Shortcuts app (shown in Japanese) with “Minutes Ago” in the action search: eleven actions, Add Marker, Start Meeting, Stop Meeting, Export Audio, List Recordings, Get Recording, Save Recording, Generate Minutes, Get Transcript, Get Buffer Status and Get Transcript with Speakers

Running from Terminal (shortcuts run)

shortcuts run runs only shortcuts in your Shortcuts library, by name. It can’t run the actions an app provides (App Shortcuts) directly.

Install shortcuts… in Settings › Agents adds the shortcuts bundled with Minutes Ago (the item appears only when the build includes them). The Shortcuts app asks about each one; click Add Shortcut for the ones you want. Each bundled shortcut runs one action with its default values:

Name for shortcuts run Action
Minutes Ago: Transcript with Speakers (30 min) Get Transcript with Speakers (last 30 minutes, Markdown)
Minutes Ago: Transcript (30 min) Get Transcript (last 30 minutes)
Minutes Ago: Export Audio (30 min) Export Audio (last 30 minutes, m4a)
Minutes Ago: Generate Minutes (30 min) Generate Minutes (last 30 minutes)
Minutes Ago: Buffer Status Get Buffer Status
Minutes Ago: Start Meeting Start Meeting (no name, no screenshots)
Minutes Ago: Stop Meeting Stop Meeting (saves it)
Minutes Ago: Save Recording (30 min) Save Recording (last 30 minutes)
Minutes Ago: List Recordings List Recordings (20)
Minutes Ago: Add Marker Add Marker (no name)
Minutes Ago: Add Screenshot Add Screenshot (prints the path of the saved file)
Minutes Ago: Pause Meeting Pause Meeting
Minutes Ago: Resume Meeting Resume Meeting

For other settings, make your own shortcut in the Shortcuts app:

  1. Create a new shortcut in the Shortcuts app and add one action, such as Get Transcript with Speakers.
  2. Name it (for example MA speakers 30 min).
  3. Run it from Terminal:
shortcuts run "Minutes Ago: Transcript with Speakers (30 min)" | cat
shortcuts run "MA speakers 30 min" | cat
shortcuts run "Minutes Ago: Export Audio (30 min)" -o ~/Desktop/
  • The first run asks the output question above, and shortcuts run doesn’t return until it is answered.
  • When the result is a file, such as audio, use -o to choose where it goes.

Keys from any app

Settings › Keyboard › Keys from Any App gives eight actions a key that works whichever app is in front:

  • Add Marker
  • Start Meeting (starts at once with the last settings)
  • Stop & Save Meeting
  • Save the Last 30 Minutes
  • Open Recordings & Minutes
  • Spoken Language List
  • Add Screenshot (the app you are in stays in front)
  • Pause / Resume Meeting (pauses the meeting in progress, or resumes it when it is paused)

Settings › Keyboard. Keys from Any App lists eight actions (Add Marker ⌃⌘M, Start Meeting None, Stop &amp; Save Meeting None, Save the Last 30 Minutes ⌃⌘P, Open Recordings &amp; Minutes None, Spoken Language List None, Add Screenshot ⌃⌘K, Pause / Resume Meeting None), each with Record and Clear. Below, the Keys in Minutes Ago list (Settings… ⌘,, Export ⌘E, Copy Text ⇧⌘C, Generate Minutes ⇧⌘M, Save to Library… ⇧⌘S, Search the transcript ⌘F, Edit a line Double-click, Delete selected lines ⌫, Pinned spoken languages (menu) ⌘1–⌘5), cut off at the bottom

  • No key is set until you choose one (a marker key you chose in an earlier version is kept). Click Record and press the key; Esc cancels, Delete clears. Clear removes it.
  • The key must include ⌘ or ⌃. With ⌘, also hold ⌃, ⌥ or ⇧. Keys Minutes Ago uses in its windows (such as ⌘E) can’t be used (“Already used for …”).
  • If another app already uses the key, the row says “Not available (used by another app)”, or “No key arrived. Another app may be using it.” when you record the key.
  • The menu shows each key next to its item.
  • Starting or saving a meeting with a key shows a short notice at the top of the screen (“Meeting started · language · app”, “Meeting saved · name”). Starting a meeting with screenshots by key never asks for the Screen Recording permission; without it the notice adds “No Screenshots (No Permission)”.
  • The same pane lists the keys inside Minutes Ago (Keys in Minutes Ago), such as ⌘E Export and ⇧⌘M Generate Minutes in the Recordings & Minutes window.
  • Agents, Shortcuts and the command-line tool can’t read or change these keys.

Command-line tool (direct version)

Direct-download version only. The Mac App Store version does not include it.

The direct-download version, distributed from this website, includes the command-line tool minutesago. It runs the same operations as the fourteen tools above, from Terminal or scripts.

  • It is at /Applications/Minutes Ago.app/Contents/MacOS/minutesago (if you keep the app somewhere else, at that app’s Contents/MacOS/minutesago).
  • It works without turning on Agent access. Only processes of the same user on this Mac are accepted. No token is needed.
  • On a Mac whose user name (the name of the home folder) is 17 bytes or more (UTF-8), the path of the tool’s connection point (a socket) exceeds the macOS limit, so the command-line tool can’t be used. In that case, the Command line tool section of Settings › Agents and the tool itself say so.
  • If Minutes Ago isn’t running, the tool launches it and waits (--no-launch turns this off).
  • The free range and free tries are the same as for agent access (above).
  • Its messages are in English only.

Installing

The Command line tool section of Settings › Agents shows the tool’s path and these two commands, with buttons to copy them. Run one of them.

Add a link in /usr/local/bin (asks for your password):

sudo ln -sf "/Applications/Minutes Ago.app/Contents/MacOS/minutesago" /usr/local/bin/minutesago

Or add the folder to your PATH (no sudo):

echo 'export PATH="/Applications/Minutes Ago.app/Contents/MacOS:$PATH"' >> ~/.zshrc

In a new Terminal window, minutesago is then available. The app never changes the link or your PATH itself. minutesago --help lists the commands.

Subcommands

Subcommand Tool What it does
status get_buffer_status The range of live audio kept, recording state, tracks, the minutes engine and more
transcript get_transcript The transcript with times
speakers get_speaker_transcript The transcript with speakers. --format (markdown default / json / text / vtt / srt), --refresh (identify speakers again)
export-audio export_audio Writes the audio to the export folder and prints the file paths. --format (m4a default / wav)
minutes generate_minutes Minutes in Markdown (does not take --track)
meeting start start_meeting Starts a meeting. --name, --screenshots <seconds> (3 / 5 / 10 / 20 / 30 / 60; 0 = none, the default), --app <bundle ID> (the app to capture; needs --screenshots), and for this meeting only --language <BCP 47>, --audio-app <bundle ID or none>, --microphone <name or none>, --preset <name>
meeting stop stop_meeting Stops the meeting and saves it as a recording. --discard ends it without saving
meeting pause pause_meeting Pauses the meeting: nothing is recorded and its clock stops until meeting resume (free)
meeting resume resume_meeting Resumes the paused meeting (free)
save save_recording Saves a range of live audio as a recording (not the export folder). --last / --start / --end, --name, `–track both
list list_recordings Lists the saved recordings with their ids. --limit <n> (1 to 200, default 20)
show <id> get_recording The transcript of one saved recording. --format (markdown default / text / json / vtt / srt), --no-markers
marker add add_marker Adds a marker now. --name
screenshot add add_screenshot Takes a screenshot of the meeting’s app now and prints the saved file’s time and path (only during a meeting with screenshots, while recording; free)
mcp — Runs as a stdio MCP server (see Registering with Claude through the command-line tool, below)
version — Prints the version

Common options:

  • --last <minutes> — the last so many minutes (default 30). For transcript, speakers, export-audio, minutes and save.
  • --start <ISO 8601> and an optional --end <ISO 8601> — a time range. The range rules are the same as for the tools above.
  • --track both|microphone|app — the track (default both).
  • --json — prints the whole result (content, structuredContent, isError) as JSON.
  • --no-launch — if Minutes Ago isn’t running, exit instead of launching it (exit code 3).
  • --timeout <seconds> — how long to wait for the tool to finish (default 600). Minutes for a long range can take a few minutes.

By default, the tool’s result text goes to standard output and error messages go to standard error. Output that already ends with a line break (subtitles, transcripts) is written as is, so > file.vtt gives the file byte for byte.

Examples:

# The last 30 minutes of transcript (microphone only; within the free range)
minutesago transcript --last 30 --track microphone

# The transcript with speakers from 10:00 to 11:00, as JSON
minutesago speakers --start 2026-10-01T10:00:00+09:00 --end 2026-10-01T11:00:00+09:00 --format json

# Minutes for the last 60 minutes, saved to a file
minutesago minutes --last 60 > minutes.md

# A meeting in English with Teams and no microphone, for this meeting only
minutesago meeting start --name "Weekly sync" --language en-US --audio-app com.microsoft.teams2 --microphone none
minutesago meeting stop

# The latest saved recordings, and one of them as subtitles
minutesago list --limit 5
minutesago show <id> --format vtt > weekly-sync.vtt

Exit codes

So that scripts can tell what happened, the exit codes are:

Code Meaning
0 Success
1 Tool error (out of range, no export folder set, not recording, no meeting with screenshots, generation failed and so on; the message goes to standard error)
3 Can’t connect to Minutes Ago (it couldn’t be launched, or the wait timed out)
4 A license is needed (no free tries left)
5 The range is outside the free range (the last 30 minutes), with no free tries left
64 Invalid arguments
70 Internal error (an unreadable response and so on)
78 The user name is too long for the socket path (the 17-byte limit above)

Registering with Claude through the command-line tool

Registering minutesago mcp gives Claude the fourteen tools without turning on Agent access and without a token. This is an alternative to Registering with Claude (direct version) above (HTTP); one of the two is enough. Settings › Agents › Command line tool can copy this command for Claude Code.

Claude Code:

claude mcp add minutes-ago -- "/Applications/Minutes Ago.app/Contents/MacOS/minutesago" mcp

Claude Desktop (mcpServers in claude_desktop_config.json):

{
  "mcpServers": {
    "minutes-ago": {
      "command": "/Applications/Minutes Ago.app/Contents/MacOS/minutesago",
      "args": ["mcp"]
    }
  }
}

If Minutes Ago isn’t running, the first call launches it.

Uninstalling the command-line tool

  • If you added the link: sudo rm /usr/local/bin/minutesago (the link was made with sudo, so removing it needs sudo too).
  • If you added the folder to your PATH: remove that line from ~/.zshrc.

Deleting the app breaks the link, so the tool stops working.