CLI · MCP
Use Damwha from the terminal and your coding agent
The damwha command and a stdio MCP server ship inside the app. They talk to the Damwha app running on your Mac, so Claude Code, Codex and your shell can search conversations, read transcripts and list action items.
The Damwha app has to be running — the command and the MCP server read from it. Until it is, they exit with code 2 and tell you to start it.
Install
From Settings
Open Settings › CLI · MCP in the app. “Install command” links ~/.local/bin/damwha to the app, and “Connect” registers the MCP server with Claude Code or Codex. If ~/.local/bin is not on your PATH the section shows the line to add.
The section appears in the desktop app only, not in the Docker or demo builds.
Manual
Prefer to run it yourself? These are the same commands the settings screen shows (it fills in your real paths).
Install the damwha command
mkdir -p ~/.local/bin && ln -s /Applications/Damwha.app/Contents/Resources/cli/damwha ~/.local/bin/damwhaClaude Code
claude mcp add --transport stdio --scope user damwha -- ~/.local/bin/damwha mcpCodex
codex mcp add damwha -- ~/.local/bin/damwha mcpOther MCP clients (JSON)
{
"mcpServers": {
"damwha": {
"command": "/Users/you/.local/bin/damwha",
"args": ["mcp"]
}
}
}JSON cannot expand ~, so write the full path to the link.
Commands
Add --json to any command for machine-readable output. Messages follow the app's display language.
| Command | What it does |
|---|---|
| damwha status | Check the connection to the app and show model readiness. Exits 0 when connected, 2 when not. |
| damwha upload <file> | Upload an audio file as a new meeting. Options: --title, --recorded-at, --folder, --preset, --whisper-model, --stt-device, --diarization-device, --language, --speakers, --min-speakers, --max-speakers, --no-summary, --no-lens. --wait blocks until processing finishes. |
| damwha search <query> | Search utterances. Options: --limit, --from, --to, --meeting, --folder. |
| damwha meetings | List meetings, newest recording first. --limit defaults to 100; --cursor continues from the hint printed after a full page. |
| damwha meeting <id> | Show one meeting: summary, tags and speakers. |
| damwha transcript <id> | Print a meeting transcript. Page with --offset and --limit. |
| damwha lenses | List action items, decisions and promises. Options: --kind, --mine, --open, --done, --meeting, --due-from, --due-to, --limit. --mine needs a speaker marked Me. |
| damwha mcp | Run the stdio MCP server. Your agent starts this; you rarely run it by hand. |
Exit codes
- 0
- Success.
- 1
- Bad option, unreadable file or an API error.
- 2
- The Damwha app is not running or still starting.
- 3
- upload
--waitfinished but a processing stage failed.
MCP tools
Registered on one server named damwha. Tools that only read data are marked read-only.
| Tool | What it does |
|---|---|
| list_lenses | List extracted lenses (action items, decisions, promises), newest first. Filter by kind, meeting, folder, due date, completion, or mine. |
| get_lens | One lens with its meeting title and the supporting utterances. |
| list_meetings | List meetings with id, recording time, status, folder and title. |
| get_meeting | A meeting's summary, tags and speakers, without the full transcript. |
| get_transcript | A page of a meeting transcript, paged with next_offset. |
| search | Search utterances and get excerpts with meeting id, utterance id and timestamps. |
| get_meeting_status | Processing progress of a meeting, for example after an upload. |
| upload_audio | Upload a local audio file as a new meeting and return its id without waiting. |
| complete_lens | Mark an open lens as completed, after you confirm. See below. |
Completing an item asks you first
complete_lens changes your data, so it never runs on the agent's say-so. Damwha shows a confirmation dialog in your client with the item, meeting, assignee and due date, read fresh from the app. Nothing changes unless you accept; declining or closing the dialog leaves the item open. The tool needs a client that supports MCP elicitation and is hidden from clients that do not.
Your data and the connected service
Data you pull through MCP follows the policy of the LLM service you connected.
Text from conversations is passed to the agent marked as untrusted content. That reduces the chance a spoken sentence is taken as an instruction; it cannot rule it out.