MCP reference
Run the server with loofah mcp. It uses the MCP 2024-11-05 protocol over stdio. Every tool is read-only, non-destructive, idempotent, and local-only.
list_meetings
Section titled “list_meetings”| Parameter | Type | Default | Notes |
|---|---|---|---|
query | string | None | Case-insensitive title or meeting ID substring. |
limit | integer | 20 | Clamped to 1..200. |
offset | integer | 0 | Number of results to skip. |
tags | array | None | Only meetings carrying every one of these tags (case-insensitive). |
untagged | boolean | false | Only meetings without any tags. Cannot be combined with tags. |
Each returned meeting includes its normalized tags, its author (null when the vault owner wrote the note; otherwise the name of the agent or other writer that created it), and its skill (null unless a skill was used to produce the note).
search_meetings
Section titled “search_meetings”Full-text search across meeting titles, notes, summaries, and transcript words. At least one of query and speaker is required.
| Parameter | Type | Default | Notes |
|---|---|---|---|
query | string | None | Case-insensitive terms; every whitespace-separated term must occur. |
speaker | string | None | Person ID or name substring. Limits results to meetings where that person spoke; the query matches anywhere in those transcripts. Without query it lists those meetings. |
kinds | array | all | Any of title, note, summary, transcript. Ignored when speaker is set. |
limit | integer | 20 | Clamped to 1..50. |
offset | integer | 0 | Number of hits to skip. |
Hits are ordered by meeting recency and carry meeting_id, kind, and a snippet around the first match. Transcript hits add the resolved speaker, speaker_id, and start_ms, which lines up with the [HH:MM:SS] timestamps in get_meeting_transcript’s text. At most three transcript hits per meeting are returned.
get_meeting
Section titled “get_meeting”Accepts required string meeting_id. Returns meeting metadata (including its normalized tags, its author — null for the vault owner’s own notes — and its skill, null unless a skill produced the note), the canonical note, summaries, and action items. Transcript words are intentionally separate.
get_meeting_transcript
Section titled “get_meeting_transcript”| Parameter | Type | Default | Notes |
|---|---|---|---|
meeting_id | string | required | A returned Loofah meeting ID. |
Returns meeting_id and text. The text uses one [HH:MM:SS] Speaker: ... line per speaker turn, timed from the start of the meeting. Speaker names come from the people registry, and unknown voices fall back to Speaker N. Word-level detail, including IDs, timestamps, and channels, is available through loofah sessions export --format json.
Resources
Section titled “Resources”| URI | MIME type | Content |
|---|---|---|
loofah://meetings/{meeting_id} | text/markdown | Meeting detail without transcript text. |
loofah://meetings/{meeting_id}/transcript | text/plain | The full speaker-labeled transcript. |
Resource listing returns recent meeting resources in pages of 20. Its cursor is a numeric result offset.
Previously issued fmtr://meetings/... resource URIs remain readable for client compatibility; new resource listings use loofah://.