Overview
The Trix MCP server includes five tools for working with audio and video content. These tools let AI assistants transcribe files, search within transcripts, extract segments by speaker or time range, and monitor transcription jobs.
Audio tools return timestamps in human-readable HH:MM:SS format alongside raw
seconds, so AI assistants can reference specific moments in recordings naturally.
list_audio_files
List audio and video files with their transcription status. Use this to browse available files, find those needing transcription, or check transcription progress.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
limit | number | no | 20 | Maximum number of results |
offset | number | no | 0 | Number of results to skip for pagination |
space_id | string | no | — | Filter by space ID |
transcription_status | "pending" | "processing" | "completed" | "failed" | no | — | Filter by transcription status |
Example
// Tool: list_audio_files
{
"space_id": "sp_abc123",
"transcription_status": "completed",
"limit": 10
}
// Returns:
{
"count": 3,
"total": 3,
"audio_files": [
{
"id": "aud_001",
"filename": "team-standup-2026-03-28.mp3",
"duration_seconds": 1845,
"transcription_status": "completed",
"created_at": "2026-03-28T09:15:00Z"
}
]
}get_audio_transcript
Get the full transcript of an audio or video file, optionally including timestamped segments and speaker diarization data.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
audio_file_id | string | yes | — | The ID of the audio file |
include_segments | boolean | no | false | Include timestamped segments |
include_speakers | boolean | no | false | Include speaker diarization info |
Example
// Tool: get_audio_transcript
{
"audio_file_id": "aud_001",
"include_segments": true,
"include_speakers": true
}
// Returns:
{
"transcript": {
"audio_file_id": "aud_001",
"full_text": "Good morning everyone. Let's start with...",
"duration_seconds": 1845,
"word_count": 3200,
"segments": [
{
"id": "seg_01",
"text": "Good morning everyone.",
"start_time": 0.5,
"end_time": 2.1,
"speaker": "Alice",
"confidence": 0.97
}
],
"speakers": [
{ "id": "spk_1", "name": "Alice", "total_duration": 620 },
{ "id": "spk_2", "name": "Bob", "total_duration": 480 }
]
}
}search_audio_transcripts
Search within audio transcripts using semantic similarity. Returns matches with timestamps, speaker attribution, and optional clip URLs for direct access to specific moments.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
query | string | yes | — | The search query |
limit | number | no | 10 | Maximum number of results |
threshold | number | no | 0.5 | Minimum similarity score (0-1) |
space_id | string | no | — | Filter by space ID |
Example
// Tool: search_audio_transcripts
{
"query": "deployment timeline",
"space_id": "sp_abc123",
"threshold": 0.7,
"limit": 5
}
// Returns:
{
"query": "deployment timeline",
"count": 2,
"total": 2,
"matches": [
{
"audio_file_id": "aud_001",
"filename": "team-standup-2026-03-28.mp3",
"match_text": "We're targeting April 15th for the prod deploy",
"start_time": 342.5,
"end_time": 348.1,
"similarity": 0.89,
"speaker": "Alice",
"timestamp_formatted": "05:42 - 05:48"
}
]
}get_audio_segments
Get transcript segments filtered by speaker or time range. Useful for extracting what a specific person said, or isolating a portion of a recording for summarization.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
audio_file_id | string | yes | — | The ID of the audio file |
speaker | string | no | — | Filter by speaker ID (e.g., "speaker_1") |
start_time | number | no | — | Start time in seconds |
end_time | number | no | — | End time in seconds |
Example
// Tool: get_audio_segments
{
"audio_file_id": "aud_001",
"speaker": "Alice",
"start_time": 300,
"end_time": 600
}
// Returns:
{
"audio_file_id": "aud_001",
"count": 8,
"segments": [
{
"id": "seg_15",
"text": "We're targeting April 15th for the prod deploy",
"start_time": 342.5,
"end_time": 348.1,
"speaker": "Alice",
"confidence": 0.94,
"timestamp_formatted": "05:42 - 05:48"
}
]
}trigger_transcription
Start transcription of an uploaded audio or video file. Supports language selection, speaker diarization, and entity detection. Returns a job ID for tracking progress.
Parameters
| Name | Type | Required | Default | Description |
|---|---|---|---|---|
memory_id | string | yes | — | The memory ID of the uploaded audio/video file |
language | string | no | — | Language code (e.g., "en", "es", "fr"). Auto-detected if not specified. |
enable_diarization | boolean | no | true | Enable speaker diarization to identify different speakers |
enable_entity_detection | boolean | no | false | Detect and tag entities like names, dates, locations |
Example
// Tool: trigger_transcription
{
"memory_id": "mem_xyz789",
"language": "en",
"enable_diarization": true,
"enable_entity_detection": true
}
// Returns:
{
"job": {
"job_id": "job_abc123",
"memory_id": "mem_xyz789",
"status": "pending",
"language": "en",
"enable_diarization": true,
"enable_entity_detection": true,
"created_at": "2026-03-28T10:00:00Z",
"estimated_completion": "2026-03-28T10:05:00Z"
},
"message": "Transcription job started with ID: job_abc123"
}The memory_id must reference a memory that contains an audio or video file
attachment. Use list_audio_files to find files with transcription_status: "pending" before triggering.
MCP Resources
In addition to tools, the MCP server exposes audio content as resources that clients can read directly using URI templates.
trix://audio/{id} # Audio file metadata and status
trix://audio/{id}/transcript # Full transcript text
trix://audio/{id}/segments # Timestamped segments with speaker infoResources are read-only and return the same data as the corresponding tools. Use resources when you need to attach audio context to a conversation without explicitly calling a tool.