syntheo mcp. It communicates over stdio and advertises version 2026-07-28 of the MCP protocol. It only reads from and writes to the local database; there is no remote MCP server.
Reads are idempotent. Proposal tools create or decline pending edits, without ever applying them. The app only needs to have created its database once; open it to review and apply proposals, and to process recording imports.
Tools
list_meetings
Each meeting contains
folder_path, which is null when outside any folder.
list_folders
Returns
folders, sorted by path, and pagination. Each folder contains path, name and parent_path (null at the top level). The list includes empty folders and parent folders. Pass a returned path as the folder_path of list_meetings.
get_meeting
Required parameter: meeting_id (string). Returns the meeting metadata, including folder_path, the canonical note, the summaries, the participants and the action items. The transcript is deliberately kept separate. For an imported meeting, the result also contains processing_status and recording_import (otherwise null).
get_meeting_transcript
The result contains
meeting_id, text, words and pagination (offset, limit, returned, total, next_offset). A missing pagination.next_offset means the page reaches the end.
get_recurring_meeting_history
Required parameter: meeting_id (string). Optional parameters: limit (20 by default, clamped between 1 and 200) and offset (0 by default). Results from newest to oldest. If the meeting belongs to no series, meetings is empty.
export_meeting
Required parameter: meeting_id (string). Returns the meeting’s full, structured record: metadata, note, summaries, participants, action items and transcripts. Prefer the detail or transcript tools, unless the task really requires a full export.
When they exist, speakers gives the names referenced by the transcript’s speaker attributions, and speaker_context describes the microphone and call context. These fields are optional.
propose_summary_edit
The result is a pending proposal. The meeting doesn’t change until the user has applied it in the app.
propose_memo_edit
The result is a pending proposal.
content replaces the meeting’s canonical note once the proposal is applied in the app.
list_proposals
get_proposal
Required parameter: proposal_id (string). Returns the metadata and a unified diff. The proposal is not applied.
decline_proposal
Required parameter: proposal_id (string). Declines a pending proposal without changing the meeting. A proposal that has already been applied or declined can’t be declined.
import_recording
Creates a meeting from an audio file on the MCP server’s computer. The app must be open on the same database: it transcribes the file with the configured transcription server, then generates the summary with the configured LLM. The audio is sent to that server.
Returns
meeting_id, job_id, processing_status, summary_status and error (possibly null). The file is not copied: don’t move it before the job ends. Poll get_recording_import until done or failed, and keep the returned IDs in case the client disconnects. An interrupted job keeps its meeting and the transcript already produced; it is not restarted automatically.
get_recording_import
Required parameter: job_id (string). Reads the durable state without starting any work. Processing states: queued, importing, transcribing, summarizing, done, failed. Summary states: pending, done, skipped_no_model, skipped_too_short, failed. A successful import can have a skipped summary. queued only progresses if the app is open.
Resources
The resource list returns recent meetings in pages of 20. Its cursor is a numeric offset.
Errors
A meeting, proposal or import that can’t be found produces an “invalid params” error. Validation failures and conflicts (empty proposal content, several summaries withouttarget_id, declining a proposal that is no longer pending, app closed during an import) are reported as internal errors, as are database failures. See Errors and exit codes.