MCP reference
Run the server with loof mcp. It uses the MCP 2024-11-05 protocol over stdio. Tools do not change vault content. Every search, list, and resource-list request refreshes the shared local cache, including while the server stays running. Detail tools and resource reads use the current vault files. Startup automatically builds a missing or incompatible cache, reporting progress on stderr before the MCP connection is established. For corruption, run loof --json init to repair the cache.
list_meetings
Section titled “list_meetings”| Parameter | Type | Default | Notes |
|---|---|---|---|
query | string | None | Desktop full-text matching; query results use relevance order. |
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”Search uses desktop word, quoted-phrase, and trailing-prefix matching. It returns one relevance-ranked result per session; equal scores use session ID order. speaker and kinds are no longer accepted.
| Parameter | Type | Default | Notes |
|---|---|---|---|
query | string | required | Nonempty full-text query. |
limit | integer | 20 | Clamped to 1..50. |
offset | integer | 0 | Number of sessions to skip. |
Hits contain session_id, title, created_at (epoch milliseconds), score, and plain-text title_snippet/content_snippet. Pagination includes the total. Fetch transcript details with get_meeting_transcript.
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), plus 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 loof 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://.
