Transcriptor
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| TRANSCRIPTOR_MODEL | No | Model to use (per engine). `mlx-community/whisper-large-v3-mlx-8bit` under MLX, `Systran/faster-whisper-large-v3` under faster-whisper. Neither engine can read the other's weights. | mlx-community/whisper-large-v3-mlx-8bit |
| TRANSCRIPTOR_DEVICE | No | faster-whisper only. `auto` | `cuda` | `cpu`. | auto |
| TRANSCRIPTOR_ENGINE | No | Inference engine: `auto` | `mlx` | `faster-whisper` | `fake`. Auto picks MLX on Apple Silicon, faster-whisper elsewhere. | auto |
| TRANSCRIPTOR_CHUNK_S | No | Chunk length; overlap is stitched away. | 120 |
| TRANSCRIPTOR_DATA_DIR | No | Model weights and scratch audio only. | <repo>/.transcriptor |
| TRANSCRIPTOR_REAPER_S | No | Job reaper interval in seconds. | 60 |
| TRANSCRIPTOR_DB_SCHEMA | No | Set to share an existing database instead of a dedicated one. | public |
| TRANSCRIPTOR_OVERLAP_S | No | Overlap between transcription chunks in seconds. | 15 |
| TRANSCRIPTOR_PUNCTUATE | No | Restore sentence boundaries after transcription. | True |
| TRANSCRIPTOR_MEM_POLL_S | No | Memory pressure polling interval in seconds. | 5 |
| TRANSCRIPTOR_DB_POOL_MAX | No | Maximum database connection pool size. | 4 |
| TRANSCRIPTOR_DB_POOL_MIN | No | Minimum database connection pool size. | 1 |
| TRANSCRIPTOR_HEARTBEAT_S | No | Job heartbeat interval in seconds. | 10 |
| TRANSCRIPTOR_STALE_JOB_S | No | Heartbeat age after which the reaper calls a job interrupted. | 90 |
| TRANSCRIPTOR_VIEWER_HOST | No | Loopback. Change only if you understand what you are exposing. | 127.0.0.1 |
| TRANSCRIPTOR_VIEWER_PORT | No | Change if something else already has the port. | 8766 |
| TRANSCRIPTOR_COMPUTE_TYPE | No | faster-whisper only. `float16` on CUDA, `int8` on CPU. Also `int8_float16`, `float32`. | float16 |
| TRANSCRIPTOR_COOKIES_FILE | No | Path to a cookies file, for login-walled sources. | |
| TRANSCRIPTOR_DATABASE_URL | No | Database URL. Marked required in the configuration table (percent-encode `@ : / #` in the password); note that the README elsewhere states the SQLite database file is created on first run by `transcriptor-mcp migrate` and that no connection string is needed. | |
| TRANSCRIPTOR_IDLE_EVICT_S | No | Unload the model after idle. Tightens under pressure. | 600 |
| TRANSCRIPTOR_KEEP_SCRATCH | No | Keep in-flight audio after a job, for debugging. | False |
| TRANSCRIPTOR_MAX_CONCURRENT | No | Maximum concurrent transcriptions. Do not raise on 16 GB — two jobs means swapping. | 1 |
| TRANSCRIPTOR_MAX_DURATION_S | No | Refuse sources longer than this (4 hours). | 14400 |
| TRANSCRIPTOR_VIEWER_ENABLED | No | Serve finished transcripts as download links. | true |
| TRANSCRIPTOR_MAX_DOWNLOAD_MB | No | Maximum download size in MB. | 2048 |
| TRANSCRIPTOR_MEM_PAUSE_MAX_S | No | How long to wait under critical pressure before aborting. | 60 |
| TRANSCRIPTOR_MEM_SELF_CAP_GB | No | Max occupancy for Transcriptor. Measured peak is 3.04 GB (Apple Silicon). | 4.0 |
| TRANSCRIPTOR_CAPTIONS_DEFAULT | No | Caption policy: `manual_only` | `never` | `prefer`. | manual_only |
| TRANSCRIPTOR_PRUNE_INTERVAL_S | No | Scratch pruning interval in seconds. | 3600.0 |
| TRANSCRIPTOR_SCRATCH_TTL_DAYS | No | Prune abandoned scratch. Active jobs are never touched. | 30.0 |
| TRANSCRIPTOR_PUNCTUATION_MODEL | No | Punctuation restoration model. | kredor/punctuate-all |
| TRANSCRIPTOR_DB_CONNECT_RETRY_S | No | Startup wait — the client may launch before Docker is up. | 120 |
| TRANSCRIPTOR_SEGMENT_BUFFER_MAX | No | Segments held in memory during a database outage. | 500 |
| TRANSCRIPTOR_MEM_SYSTEM_FLOOR_GB | No | Free memory left for everything else. Measured, not guessed. | 2.5 |
| TRANSCRIPTOR_COOKIES_FROM_BROWSER | No | `chrome`, `safari`, `firefox`, `brave` — for login-walled sources. | |
| TRANSCRIPTOR_YTDLP_REMOTE_COMPONENTS | No | `ejs:github` to solve YouTube's JS challenge — downloads and runs remote code, so opt-in. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tasks | {
"list": {},
"cancel": {},
"requests": {
"tools": {
"call": {}
},
"prompts": {
"get": {}
},
"resources": {
"read": {}
}
}
} |
| tools | {
"listChanged": true
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| transcript_createA | Start a transcription job and return its id immediately.
The call never waits for work. Poll
Sources longer than four hours are refused. Login-walled, private,
members-only or age-restricted URLs fail with |
| transcript_probeA | Inspect a source without transcribing it, and without downloading it. Says how long it is, whether captions already exist (which would make it
near-instant), whether it needs cookies, and whether you have already
transcribed it under these exact settings. Pass the same |
| transcript_statusA | Where a job stands: status, stage, progress, elapsed and ETA.
Once the job has produced anything, the response also carries
Present a link as a markdown link inside a sentence, not inside a
code block — fenced blocks are not clickable, so the user has to
copy and paste. Prefer offering |
| transcript_getA | Transcript text, rendered from segments on demand.
The response also carries Works on a running job — you get what is committed so far, with
|
| transcript_searchA | Find a phrase in a transcript, with timestamps. The intended way into a long transcript, together with transcript_segments — pulling the whole thing would flood your context. Works on a running job: it searches what has been committed so far. Falls back to fuzzy matching when nothing matches whole words, which is what helps when you half-remember a phrase. |
| transcript_segmentsA | Pull a time window of the transcript. Segments overlapping the window are returned, not only those contained
by it, so a segment straddling the boundary still appears.
|
| transcript_listB | Recent jobs, newest first. Filter by |
| transcript_exportA | Write a transcript to a file at a path you choose. The only thing Transcriptor writes to disk, and only on request.
The response also carries |
| transcript_cancelB | Stop a job. A queued job stops at once; a running one stops at the next chunk boundary, so allow up to about two minutes. Everything already transcribed survives and the job can be resumed later. |
| transcript_deleteA | Delete a transcript. Destructive and not reversible. Removes the job and its segments, chunks, events and cached renders.
|
| transcript_batchA | Queue every media file in a folder, one job each.
|
| transcript_find_clipsA | Find self-contained, high-density moments worth cutting into clips. Scored on words per second, but only runs that begin at the start of a sentence and end at the end of one are considered — a moment that opens mid-clause is worthless however dense it is. Selected clips never overlap. Returns, per clip: the ffmpeg command to cut it, the command to crop it to 9:16, and an SRT rebased to the clip's own clock for burning in. The commands are returned, not run — nothing is written to disk. |
| transcript_healthA | Engine state, real memory pressure, queue depth, degraded tasks.
Also reports whether the transcript download viewer is serving. If
Memory numbers come from the monitor task's most recent sample rather than being measured inline, so this stays a database-and-memory read. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 13 tools
Each tool targets a distinct action, and descriptions explicitly clarify relationships (e.g. transcript_list for board view vs transcript_status for one job). The reading tools (transcript_get, transcript_segments, transcript_search) overlap in that they all return transcript content, though their modes differ enough to separate them.
Every tool uses the same transcript_ prefix followed by a clear snake_case verb/noun (list, create, cancel, delete, export, probe, search, segments, find_clips). No style mixing or vague names.
13 tools is well-scoped for a transcription service, covering the full job lifecycle plus read, search, clip-finding and health operations. Each tool earns its place without redundancy.
Core coverage is strong: create, list, status, get, search, segments, export, cancel, delete, batch, probe and health are all present. Minor gap: 'paused' and 'resumable' appear as statuses but no explicit pause/resume tool exists to trigger those states.