Skip to main content
Glama
OrellBuehler

Tdarr MCP Server

by OrellBuehler

Server Configuration

Describes the environment variables required to run the server.

NameRequiredDescriptionDefault
TDARR_URLNoBase URL of Tdarr Server, e.g. http://tdarr.local:8265.
TDARR_SERVERNoAlias for TDARR_URL. Used if TDARR_URL is unset.
TDARR_API_KEYNoAPI key from Tools → API Keys. Only needed when auth is enabled.

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

CapabilityDetails
tools
{
  "listChanged": true
}

Tools

Functions exposed to the LLM to take actions

NameDescription
get_statusA

Get Tdarr Server status: version, build date, uptime, OS and server engine (GET /api/v2/status). Also serves as a connectivity/API-key check — call this first when something looks wrong.

get_server_timeA

Get the current time on the Tdarr Server as a Unix epoch in milliseconds. Useful for interpreting the epoch timestamps returned by file and job records.

get_server_logA

Get the Tdarr Server log as plain text (GET /api/v2/get-server-log). Returns the trailing lines only (default 100) — the full log can be very large.

get_resource_statsA

Get current Tdarr Server resource usage: process uptime and heap, plus host CPU percentage and memory used/total (POST /api/v2/get-res-stats).

get_db_statusesA

Get the status of the Tdarr databases (POST /api/v2/get-db-statuses). Use when the UI reports the database as loading, busy or corrupted.

get_process_infoA

Get the process tree of the server and every connected node — pid, ppid, executable, script and memory usage per process (POST /api/v2/get-process-info). Useful for spotting stuck ffmpeg/HandBrake child processes.

get_performance_statsA

Get Tdarr internal performance statistics (POST /api/v2/performance-stats) — timings for server operations, used to diagnose a slow server or database.

check_for_updateA

Check whether a Tdarr update is available (POST /api/v2/updater/check). Defaults to a check only. Set download_update to fetch the update, and apply_update to install it — applying an update requires calling relaunch_server afterwards.

get_package_indexA

Get the Tdarr package index (POST /api/v2/updater/package-index) — the versions and artifacts the updater can install.

relaunch_serverA

Relaunch Tdarr Server to finish applying a downloaded update (POST /api/v2/updater/relaunch). Only call this after check_for_update reported the update as applied — it interrupts running jobs.

restart_serverA

Restart Tdarr Server (POST /api/v2/restart-server). Disruptive: running workers are interrupted and every node reconnects. Ask the user before calling this.

restart_uiA

Restart the Tdarr web UI process (GET /api/v2/restart-ui). Does not interrupt transcoding — use it when the UI is unresponsive but jobs are fine.

run_help_commandA

Run an ffmpeg or HandBrake help command on the server and return its output (POST /api/v2/run-help-command). Use it to check which encoders, filters or presets the server's binaries actually support before writing transcode arguments.

list_nodesA

List the connected Tdarr nodes (GET /api/v2/get-nodes), keyed by node ID. The summary gives name, paused state, version, worker limits, running worker count and resource stats; pass detailed for the full record including every running worker.

get_node_logA

Get a node's log as plain text (POST /api/v2/get-node-log). Returns the trailing lines only (default 100). Use it to see why a node's transcodes are failing.

get_dispatch_readinessA

Check whether the server is ready to dispatch tasks and has finished server/node plugin setup (GET /api/v2/nodes/ready). Returns { ready, reasons } — call it before queueing work after a restart.

update_nodeA

Update a connected node's settings (POST /api/v2/update-node). node_updates is merged into the node record — e.g. { nodePaused: true } to pause a node, { nodeName: 'basement' } to rename it, or { priority: 1 } to change its task priority. Read the current record with list_nodes(detailed) first.

alter_worker_limitA

Increase or decrease by one the number of workers of a given type on a node (POST /api/v2/alter-worker-limit). Call it repeatedly to move the limit by more than one.

cancel_worker_itemA

Cancel the item a worker is currently processing (POST /api/v2/cancel-worker-item). The worker stays alive and picks up the next item; the cancelled file goes back to the queue.

kill_workerA

Kill a worker on a node (POST /api/v2/kill-worker). Unlike cancel_worker_item this removes the worker itself — use it for a worker that is wedged and not responding to a cancel.

restart_nodeA

Restart a node process (POST /api/v2/restart-node). Its running workers are interrupted and their files are requeued.

disconnect_nodeA

Forcefully disconnect a node from the server (POST /api/v2/disconnect-node). Use it to clear a node that shows as connected but is actually gone.

list_librariesA

List the configured Tdarr libraries with their ID, name, source folder, priority, plugin stack or flow, and scanning settings. The library _id is the dbID every other library and file tool needs.

get_libraryA

Get one library's full settings record — folders, filters, schedule, plugin stack or flow ID, transcode and health check options.

scan_libraryA

Start a file scan on a library (POST /api/v2/scan-files). 'scanFindNew' adds files not yet in the database, 'scanFresh' rescans everything from scratch, and 'scanFolderWatcher' scans a specific list of file paths. Scanning is asynchronous — poll get_scanner_status for progress.

get_scanner_statusA

Get the progress of a library's file scanner (POST /api/v2/get-filescanner-status). Poll this after scan_library.

kill_scannerA

Stop a library's file scanner mid-run (POST /api/v2/kill-file-scanner).

remove_library_filesA

Remove every file record of a library from the Tdarr database (POST /api/v2/remove-library-files). Files on disk are NOT touched — this only clears the scan results, which then have to be rebuilt with scan_library. Ask the user before calling this.

toggle_folder_watchB

Enable or disable folder watching for one of a library's folders (POST /api/v2/toggle-folder-watch).

toggle_scheduleA

Turn a contiguous range of hour blocks in a library's weekly schedule on or off (POST /api/v2/toggle-schedule). The schedule controls when Tdarr is allowed to process the library.

update_schedule_blockA

Enable or disable a single block in a library's weekly schedule (POST /api/v2/update-schedule-block).

manage_library_pluginA

Add, remove or enable/disable a classic plugin in a library's plugin stack. Adding requires the plugin source and the position in the stack; get the plugin IDs from search_plugins. Libraries that use a flow instead of a classic stack are not affected.

manage_codec_exclusionA

Add, remove or toggle a codec in a library's basic transcoding include/exclude list. Applies to the basic (non-plugin) video or audio transcode settings of the library.

list_subdirectoriesA

List the subfolders of a path as seen by Tdarr Server (POST /api/v2/get-subdirectories). Use it to discover the paths a library can point at — the server sees container paths, not host paths.

verify_folder_existsA

Check whether a folder exists and is readable by Tdarr Server (POST /api/v2/verify-folder-exists). Returns a boolean.

search_filesA

Search the Tdarr file database by filename substring and file size (POST /api/v2/search-db). Returns one summarized record per match: path, library, container, size, codecs, and transcode/health status.

get_fileA

Get one file's full database record — ffProbe output, MediaInfo, transcode and health check history, and the current queue status.

query_tableA

Query one of the paginated tables behind the Tdarr UI (POST /api/v2/client/{client_type}) with server-side filtering, sorting and paging. This is the low-level escape hatch for views search_files cannot express; the valid client_type and opts.table values are the ones the Tdarr UI uses for that page. Prefer search_files for plain file lookups.

rescan_fileA

Rescan a single file so Tdarr refreshes its ffProbe data and queue status (POST /api/v2/rescan-file). Use it after changing a file on disk outside Tdarr.

scan_file_detailsA

Run ExifTool, MediaInfo and/or a closed-caption scan against one file and return the results (POST /api/v2/scan-individual-file). Works on any path the server can read, whether or not it is in a library.

create_sampleA

Create a 30 second sample of a file (POST /api/v2/create-sample) and return the path of the sample. Useful for testing a plugin stack or flow on a short clip before running it on a whole library.

requeue_filesA

Requeue every file of a library for transcoding or health checking (POST /api/v2/set-all-status). Tdarr's file tables are table1 transcode queue, table2 transcode success, table3 transcode error, table4 health check queue, table5 health check success, table6 health check error — requeueing from table2 back to the transcode queue re-runs the whole library.

set_staged_verdictA

Take action on an item staged for user approval (POST /api/v2/transcode-user-verdict) — accept, reject or otherwise resolve a transcode that is waiting on a decision.

bulk_update_filesA

Update fields on specific file records by ID (POST /api/v2/bulk-update-files). The update object is merged into every listed file — e.g. { holdUntil: 0 } to release a hold, or { TranscodeDecisionMaker: 'Queued' } to requeue just those files.

delete_fileA

Delete one file from disk and remove it from the Tdarr database (POST /api/v2/delete-file). This deletes real media — confirm with the user first.

bulk_delete_filesA

Delete several files from disk and remove them from the Tdarr database (POST /api/v2/bulk-delete-files). This deletes real media — list the files for the user and confirm before calling.

delete_unhealthy_filesA

Delete every file in the transcode-error table (table3) or the health-check-error table (table6) from disk (POST /api/v2/delete-unhealthy-files). This deletes real media in bulk — always list the affected files with query_table and confirm with the user first.

delete_cache_fileA

Delete a leftover file from the Tdarr transcode cache (POST /api/v2/delete-cache-file). Use it to clear partial output from an interrupted worker.

find_duplicatesA

Start Tdarr's duplicate detection (POST /api/v2/find-duplicates). 'metadata' compares stream metadata and is fast; 'sha256' hashes file content and is accurate but slow — with sha256, hash_amount controls how much of each file is read. Runs asynchronously; stop it with stop_find_duplicates.

stop_find_duplicatesA

Stop a running duplicate detection pass (GET /api/v2/stop-dedupe).

get_pie_statsA

Get the pie-chart statistics shown on the Tdarr dashboard (POST /api/v2/stats/get-pies) — file counts by transcode status, health status, container, video and audio codec, resolution and channel layout. Omit library_id for totals across every library.

get_stream_statsA

Get stream-level statistics (POST /api/v2/stats/get-streams) — the codecs, languages and stream types present across the library's files.

get_space_savedA

Get space saved by transcoding over time, bucketed (POST /api/v2/stats/get-space-saved). Filter by library, node, worker type or plugin to see which of them actually saves storage.

get_worker_verdict_historyA

Get transcode and health check outcomes over time, bucketed (POST /api/v2/stats/get-worker-verdict-hist) — successes, errors and not-required counts. The quickest way to see whether a change made failures go up.

get_resource_historyB

Get the Tdarr Server resource history (POST /api/v2/stats/get-res-hist) — CPU percentage, memory and heap usage over time.

get_worker_historyA

Get the history of running worker counts by type (POST /api/v2/stats/get-running-worker-hist). Use it to check whether workers were actually busy over a period, or idle waiting for work.

search_pluginsA

Search the classic plugins available to the server (POST /api/v2/search-plugins). Returns name, type, operation, description, version and source for each match — the source and ID are what manage_library_plugin needs.

search_flow_pluginsB

Search the flow plugins — the individual nodes available inside a Tdarr flow (POST /api/v2/search-flow-plugins).

search_flow_templatesA

Search the ready-made flow templates (POST /api/v2/search-flow-templates). Read one before designing a flow from scratch — the templates show how the official flows wire their nodes together.

read_pluginA

Read the source of a classic plugin (POST /api/v2/read-plugin-text). Read a Community plugin to understand what it does before adding it to a library, or a Local plugin before editing it.

save_pluginA

Write the source of a local classic plugin (POST /api/v2/save-plugin-text). Overwrites the whole file, so read_plugin first and send back the full modified source. Only edit Local plugins — Community plugins are overwritten on the next plugin update.

create_pluginA

Create a basic local classic plugin with Tdarr's plugin creator (POST /api/v2/create-plugin). The conditionals string is the plugin's matching logic; the action describes what to run when it matches. For anything beyond a simple condition/action pair, create it here and then refine the source with read_plugin and save_plugin.

copy_community_plugin_to_localA

Copy a Community plugin into Local plugins so it can be edited without being overwritten by plugin updates (POST /api/v2/copy-community-to-local).

verify_pluginA

Check whether a classic plugin exists on the server (POST /api/v2/verify-plugin). Returns a boolean — use it before adding a plugin to a library's stack.

delete_pluginA

Delete a plugin from the server (POST /api/v2/delete-plugin). Deleting a plugin that a library's stack still references leaves that stack broken — check with list_libraries first.

update_community_pluginsA

Pull the latest Community plugins from the Tdarr plugin repo (POST /api/v2/update-plugins). This overwrites Community plugins; Local plugins are untouched.

sync_plugins_to_nodesA

Push the server's current plugins out to every connected node (POST /api/v2/sync-plugins). Run it after update_community_plugins or save_plugin so nodes execute the new code.

list_plugin_repo_versionsA

List recent commits on the Tdarr plugin repo — SHA, date, message and author (POST /api/v2/plugin-repo-versions). Use it to see what changed upstream before pulling plugin updates.

list_flowsA

List the Tdarr flows defined on the server with their ID, name, description and size. A library's flowId (from list_libraries) points at one of these.

get_flowA

Get one flow's complete graph — every node with its plugin ID and inputs, plus the edges between them. Read this to explain or debug what a library's flow actually does.

search_job_reportsA

Search the job reports on the server by filename (POST /api/v2/search-job-reports). Returns the matching report filenames and their last-modified time; read one with get_job_report.

get_job_reportA

Get a job report by job ID (GET /api/v2/job-reports/{jobId}) — the full worker log for that job plus its metadata, including whether the job is still running. This is where the ffmpeg command line and its errors live, so read it first when a transcode fails.

list_file_job_reportsA

List every job report recorded for one file (POST /api/v2/list-footprintId-reports). The footprintId is on the file record from get_file, and identifies the file across renames and transcodes.

read_job_report_fileA

Read one report file belonging to a job (POST /api/v2/read-job-file). Use it for the individual files listed by list_file_job_reports when a job produced more than one report.

delete_job_reportA

Delete one job report from the database and from disk (POST /api/v2/delete-job-report).

delete_job_reportsA

Delete job reports in bulk (POST /api/v2/delete-job-reports). With no filters this deletes every report — pass filters to narrow it, and confirm with the user first.

list_backupsA

List the Tdarr database backups on the server with their name, size and date (POST /api/v2/get-backups).

create_backupA

Create a backup of the Tdarr database (POST /api/v2/create-backup). Runs asynchronously — poll get_backup_status for progress. Take one before any bulk change to libraries or files.

get_backup_statusA

Get the status of a backup in progress (POST /api/v2/get-backup-status).

reset_backup_statusA

Reset a stuck backup status (POST /api/v2/reset-backup-status). Use it when get_backup_status keeps reporting a backup that is no longer running.

delete_backupA

Delete a Tdarr database backup (POST /api/v2/delete-backup).

list_automationsA

List the automation configurations defined on the server. The _id of one of these is the config_id run_automation takes.

get_automationA

Get one automation configuration in full — its trigger, payload shape and targets.

run_automationA

Manually trigger an automation (POST /api/v2/run-automation). Scope it to specific libraries or nodes, and use the bypass flags only when you deliberately want to jump the worker or staged-file limits.

query_databaseA

Read a Tdarr database collection directly (POST /api/v2/cruddb) for anything the dedicated tools do not cover — global settings, variables, staged items, jobs, statistics. Read-only: this tool cannot insert, update or remove documents. 'getAll' on FileJSONDB returns the entire file database, so prefer search_files there.

Prompts

Interactive templates invoked by user choice

NameDescription

No prompts

Resources

Contextual data attached and managed by the client

NameDescription

No resources

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/OrellBuehler/tdarr-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server