Skip to main content
Glama

mcp-tautulli

A single-file MCP server for Tautulli — Plex monitoring via Claude Code (or any MCP client).

19 read-only tools. No mutations. All configuration via environment variables.

Prerequisites

  • Python 3.10+

  • A running Tautulli instance with an API key

  • Claude Code (or any MCP-compatible client)

Related MCP server: Huntress-MCP-Server

Installation

pip install mcp-tautulli

Or install with uv:

uv tool install mcp-tautulli

Or from source:

git clone https://github.com/lodordev/mcp-tautulli.git
cd mcp-tautulli
pip install .

Configuration

Three environment variables:

Variable

Required

Default

Description

TAUTULLI_URL

Yes

Tautulli base URL with protocol (e.g. http://localhost:8181 or https://tautulli.example.com:8181)

TAUTULLI_API_KEY

Yes

Tautulli API key (Settings → Web Interface → API Key)

TAUTULLI_TLS_VERIFY

No

true

Set to false if using self-signed certs (e.g. Tailscale serve)

Claude Code Setup

Add to your project's .mcp.json:

{
  "mcpServers": {
    "tautulli": {
      "command": "mcp-tautulli",
      "env": {
        // Include the protocol (http:// or https://)
        "TAUTULLI_URL": "http://your-tautulli-host:8181",
        "TAUTULLI_API_KEY": "your-api-key-here"
      }
    }
  }
}

Claude Desktop Setup

Add to ~/Library/Application Support/Claude/claude_desktop_config.json (macOS) or %APPDATA%\Claude\claude_desktop_config.json (Windows):

{
  "mcpServers": {
    "tautulli": {
      "command": "mcp-tautulli",
      "env": {
        "TAUTULLI_URL": "http://your-tautulli-host:8181",
        "TAUTULLI_API_KEY": "your-api-key-here"
      }
    }
  }
}

Local Development Config

To point your MCP client at local source without reinstalling after every change, use uv run --directory instead of the installed binary:

{
  "mcpServers": {
    "tautulli-dev": {
      "command": "uv",
      "args": ["run", "--directory", "/path/to/mcp-tautulli", "mcp-tautulli"],
      "env": {
        "TAUTULLI_URL": "http://your-tautulli-host:8181",
        "TAUTULLI_API_KEY": "your-api-key-here"
      }
    }
  }
}

This works in both Claude Code (.mcp.json) and Claude Desktop (claude_desktop_config.json). Restart the client after code changes — no uv tool install needed.

Or run standalone:

export TAUTULLI_URL="http://localhost:8181"
export TAUTULLI_API_KEY="your-api-key"
mcp-tautulli

Tools

Tool

Description

tautulli_activity

Current Plex streaming activity — who's watching what, progress, quality

tautulli_history

Recent playback history with filters (user, media type, search, date) — includes transcode decision; pass include_ip=true to show client IP (off by default, it's PII) and include_performance=true to also fetch per-record bitrate via get_stream_data

tautulli_recently_added

Recently added content — what's new in your Plex libraries

tautulli_search

Search Plex content by title across all libraries — output includes [key: N] rating keys

tautulli_metadata

Full metadata for one item by rating key — summary, cast/crew, genres, ratings, and media quality (resolution, codecs, HDR/Dolby Vision, file size). Server file paths omitted

tautulli_item_stats

Watch stats for one item — plays/time over 24h/7d/30d/all, plus which users watched it (friendly name only)

tautulli_user_stats

Per-user watch statistics — plays, watch time, last seen

tautulli_library_stats

Library item counts, total plays, last played per library — output includes [id: N] section ids

tautulli_library_media_info

Per-library media-quality breakdown — total size, item count, and per-item resolution/codec/container/size (find largest files)

tautulli_most_watched

Top content by plays or duration (TV, movies, music, users)

tautulli_server_info

Plex server identity — name, version, platform, connection

tautulli_status

Server config and reachability check

tautulli_transcode_stats

Direct play vs transcode breakdown by platform

tautulli_platform_stats

Top platforms/devices by plays and watch time

tautulli_stream_resolution

Source vs delivered resolution analysis

tautulli_plays_by_date

Daily play counts over time by stream type

tautulli_plays_by_day_of_week

Weekly viewing patterns — which days see the most activity

tautulli_plays_by_hour

Hourly viewing distribution — when people watch

tautulli_stream_data

Detailed stream performance data — bitrate, codec, transcode decision, bandwidth for a specific play (use row_id from history or session_key from activity)

All tools are read-only — this server does not modify any Tautulli or Plex state. Each tool calls a fixed Tautulli get_*/search command; there is no passthrough that could reach a write/destructive endpoint.

Privacy: user-identifying data is minimized by default — usernames, user IDs, emails, and thumbnails are never emitted (users appear by friendly name only), server file paths are omitted, and client IP addresses are opt-in (include_ip=true on tautulli_history). Note that Tautulli itself has no read-only API key — the key you configure is a full-access master key, so this server's read-only guarantee lives in its fixed command set, not in the credential.

tautulli_activity

2 active stream(s):

  • Alice playing "The Bear S02E06 — Fishes" — 45%, on Apple TV (direct play)
  • Bob playing "Oppenheimer (2023)" — 12%, on Roku (transcode)

Bandwidth: 18.5 Mbps total (LAN: 12.2, WAN: 6.3)

tautulli_plays_by_day_of_week

Plays by day of week (last 30 days):

  Monday   :  91 ██████████████████████████████  (TV:62, Movies:18, Music:11)  ← peak
  Tuesday  :  76 █████████████████████████  (TV:56, Movies:15, Music:5)
  Wednesday:  62 ████████████████████  (TV:34, Movies:20, Music:8)
  Thursday :  45 ██████████████  (TV:32, Movies:8, Music:5)
  Friday   :  59 ███████████████████  (TV:37, Movies:14, Music:8)
  Saturday :  50 ████████████████  (TV:32, Movies:10, Music:8)
  Sunday   :  86 ████████████████████████████  (TV:60, Movies:16, Music:10)

Total: 469 plays, avg 67.0/day

tautulli_stream_data (pass row_id from history output)

Stream Performance Data:

Media: Game of Thrones — The Red Woman (episode)

Quality Profile: Original
Source Bitrate: 10617 kbps
Source Video Bitrate: 10233 kbps
Source Audio Bitrate: 384 kbps

Stream Bitrate: 10617 kbps
Stream Resolution: 1080p
Stream Video Codec: h264
Stream Framerate: 24p
Stream Audio Codec: ac3
Stream Audio Channels: 6

Source Container: mkv
Source Video Codec: h264
Source Audio Codec: ac3
Source Resolution: 1080

Video Decision: direct play
Audio Decision: direct play

tautulli_metadata (pass [key: N] from search / recently-added)

Example Movie (2019) — movie

Library: Movies
Content Rating: PG-13
Aired: 2019-05-01
Duration: 2h 10m
Ratings: audience 7.9
Genres: Adventure, Sci-Fi
Resolution: 1080p
Container: mkv
Video Codec: h264
Audio: eac3 6ch
File Size: 18.5 GB
Dynamic Range: SDR

IDs: imdb://tt0000000, tmdb://00000

tautulli_library_media_info (pass [id: N] from library stats)

Library media info (section 1, 500 items, 4.2 TB total):

Resolutions (top 3): 1080:2, 4k:1

Items (sorted by file_size desc):
  • Example Feature (2021) — 4k, hevc, mkv, 42.0 GB
  • Another Movie (2018) — 1080, h264, mkv, 12.3 GB
  • A Third Film (2016) — 1080, h264, mp4, 9.8 GB

tautulli_search

Search results for "breaking":

Movies:
  • Breaking (2012) — Movies

TV Shows:
  • Breaking Bad (2008) — TV Shows

Troubleshooting

"TAUTULLI_URL environment variable not set" Both TAUTULLI_URL and TAUTULLI_API_KEY must be set. Find your API key in Tautulli → Settings → Web Interface → API Key.

TLS/SSL errors If Tautulli is behind a reverse proxy with a self-signed certificate, set TAUTULLI_TLS_VERIFY=false.

"Tautulli unreachable" Verify the URL is accessible from the machine running the MCP server. Check firewalls and that Tautulli is running.

License

MIT

Available Tools

16 tools
tautulli_activityA

Get current Plex streaming activity — who's watching what, playback state, progress, and quality.

Use this before restarting Plex or rebooting servers to check for active streams.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It describes the action and output hints but does not disclose behavioral traits like read-only nature, error conditions, or side effects. The description is adequate for a simple getter but lacks explicit transparency.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with the core action, followed by a practical usage tip. Every word adds value, no fluff.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and the existence of an output schema (which covers return values), the description is sufficient. It covers purpose, usage scenario, and hints at output fields. Missing details on error responses or empty state, but overall complete for a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

No parameters exist, so schema coverage is 100% by default. The description adds no parameter information, but none is needed. Baseline for 0 parameters is 4, and the description does not detract.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get current Plex streaming activity' with specific details (who's watching, playback state, progress, quality). It distinguishes from siblings like tautulli_history (historical data) by focusing on current activity, and uses a specific verb+resource pair.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly gives a usage scenario: 'Use this before restarting Plex or rebooting servers to check for active streams.' This provides clear context, though it does not explicitly mention when not to use or compare to siblings, the context is strong.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_historyB

Get recent Plex playback history.

ParametersJSON Schema
NameRequiredDescriptionDefault
lengthNoNumber of records to return (default 10, max 50).
userNoFilter by username.
media_typeNoFilter by type: "movie", "episode", "track" (audiobook).
searchNoText search in titles.
start_dateNoOnly show history from this date (YYYY-MM-DD).
include_performanceNoAlso fetch stream bitrate per record via get_stream_data (makes one extra API call per record — use with small lengths).
include_ipNoAlso show the client IP address per record. Off by default — IP addresses are personally identifying, so opt in when you need them.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden for behavioral disclosure. It only says 'get recent history' without mentioning whether the tool is read-only, idempotent, or has any side effects, permissions, or performance implications beyond what schema hints at (e.g., include_performance parameter).

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is efficiently front-loaded. However, for a tool with 7 parameters and many siblings, slightly more context would be beneficial without harming conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has many filters and siblings, the description is too minimal. It does not explain what 'playback history' includes (e.g., time range, user info, media details), leaving the agent to rely entirely on the output schema for completeness.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional meaning beyond the generic tool purpose. Baseline of 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get recent Plex playback history' clearly states the verb ('Get'), resource ('Plex playback history'), and implies recency, distinguishing it from siblings like tautulli_activity (current activity) and tautulli_recently_added (recently added media).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit guidance on when to use this tool versus alternatives (e.g., tautulli_activity for live viewing). The description only states what it does, leaving the agent to infer context from the tool name and sibling list.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_library_statsA

Get library-level statistics — item counts, total plays, and last played content per library.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided. The description only implies a read operation but lacks details on performance, side effects, or any constraints. For a tool with no annotations, the description should provide more behavioral context.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear, and front-loaded sentence. Every part contributes to understanding the tool's purpose without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given zero parameters and the presence of an output schema, the description is largely sufficient. It clearly states what the tool returns. However, it could mention that it covers all libraries on the server to avoid ambiguity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

There are zero parameters, so the baseline is 4. The description adds value by listing the types of statistics returned (item counts, total plays, last played content), compensating for the lack of parameters.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action (Get), the resource (library-level statistics), and specifies the exact statistics returned (item counts, total plays, last played content). This distinguishes it from sibling tools like tautulli_user_stats or tautulli_most_watched.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool vs alternatives such as tautulli_user_stats or tautulli_most_watched. The description only states what it does without any context on scoping or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_most_watchedC

Get most watched content over a time period.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoTime range in days (default 7).
stat_typeNoSort by "plays" (total plays) or "duration" (total watch time).plays
categoryNoContent category — "tv", "movies", "music", or "users" (top users).tv

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries full burden. It does not disclose that it is a read operation, what data is returned, or how 'most watched' is determined beyond the schema parameters.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence, which is concise, but it omits useful context that could fit without becoming verbose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the presence of an output schema, the description does not need to explain return values. However, with three optional parameters and many siblings, the description is minimally complete but lacks depth to guide usage.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so each parameter already has a description. The tool description adds no additional semantic value beyond what the schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states 'Get most watched content over a time period,' which is a clear verb+resource but is vague and does not differentiate from sibling tools like tautulli_library_stats or tautulli_user_stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. Sibling tools include many statistics-related tools, but the description provides no context for selection.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_platform_statsA

Get top platforms/devices by plays and total watch time.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoTime range in days (default 30).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, so description must cover behavioral traits. It describes the output but doesn't disclose read-only nature, authentication needs, or potential side effects. However, the operation is clearly a read, so it's adequate but not thorough.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, 9 words, front-loaded with key information. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (one optional param, output schema present), the description adequately informs about the output. It could mention that it provides aggregated stats but is largely complete for this context.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Only one parameter ('days') with schema description covering 100%. The description adds no extra meaning beyond what the schema already provides, so baseline 3 is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool gets top platforms/devices by plays and total watch time. It uses a specific verb ('get') and resource ('top platforms/devices'), distinguishing it from siblings like tautulli_user_stats or tautulli_most_watched.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies when to use (for platform/device stats) but lacks explicit guidance on when not to use or alternatives. With many siblings, this is a moderate gap.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_plays_by_dateA

Get daily play counts over time, broken down by stream type (direct play, direct stream, transcode).

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoNumber of days to show (default 14, max 90).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It correctly describes a read operation ('Get daily play counts') but does not mention any side effects, permissions, or data limits beyond what the schema shows. The description is straightforward and accurate, but minimal.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single sentence of 15 words, front-loaded with the core action ('Get daily play counts') and essential details ('broken down by stream type'). No extraneous information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With one parameter and an output schema present, the description provides sufficient context for a simple daily-play-count tool. It lacks mention of date formatting or handling of missing days, but the output schema likely covers return format. Adequate for its complexity.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The single parameter 'days' is fully described in the input schema ('Number of days to show (default 14, max 90)'). The tool description adds no additional meaning beyond the schema, so baseline score of 3 applies due to high schema coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states 'Get daily play counts over time, broken down by stream type', using a specific verb ('Get') and resource ('daily play counts'). It distinguishes from sibling tools like 'tautulli_plays_by_hour' and 'tautulli_most_watched' by specifying the time granularity ('daily') and breakdown ('by stream type').

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives such as 'tautulli_plays_by_hour', 'tautulli_plays_by_day_of_week', or 'tautulli_most_watched'. It also lacks prerequisites or limitations like minimum days or data availability.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_plays_by_day_of_weekB

Get weekly viewing patterns — which days of the week see the most Plex activity.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoTime range in days (default 30).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations provided, and description only states the tool 'gets viewing patterns' without detailing behavioral traits like aggregation behavior or data freshness.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single, concise sentence that efficiently conveys purpose without any fluff; front-loaded with key information.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Despite output schema existence, description omits details about the return format (e.g., day names vs numbers) and provides no behavioral context, leaving gaps for such a simple tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Input schema describes 'days' parameter with default and coverage is 100%, but description adds no additional meaning beyond what schema provides.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states it retrieves Plex activity patterns by day of week, distinguishing it from sibling tools like tautulli_plays_by_date (daily totals) and tautulli_plays_by_hour (hourly patterns).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives; lacks explicit context or exclusions.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_plays_by_hourB

Get hourly viewing distribution — when people watch Plex throughout the day.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoTime range in days (default 30).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, description should disclose behavioral traits like read-only nature, output format, or any side effects. It only states the purpose, omitting details such as whether results are aggregated or what the data range covers.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence with no redundant words. Front-loaded with key action and resource, making it immediately clear what the tool does.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the output schema, description need not detail return values. However, for a tool among many similar sibling tools, it could benefit from specifying the aggregation level (hourly) more explicitly. Adequate but not comprehensive.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% for the single parameter 'days'. Tool description does not add additional meaning beyond what the schema already provides (time range in days). Baseline score is appropriate.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

Description clearly states the tool retrieves hourly viewing distribution for Plex, using specific verb 'get' and resource 'hourly viewing distribution'. It distinguishes from sibling tools like tautulli_plays_by_date and tautulli_plays_by_day_of_week.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Description provides no guidance on when to use this tool versus alternatives. It does not mention exclusions, prerequisites, or explicitly suggest choosing this over other 'plays_by_*' tools.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_recently_addedA

Get recently added content to Plex — shows what's new in your libraries.

ParametersJSON Schema
NameRequiredDescriptionDefault
countNoNumber of items to return (default 10, max 50).
media_typeNoFilter by type: "movie", "show", "artist". Empty for all.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden. It only states the purpose without disclosing behavioral traits like caching, real-time behavior, or required permissions. For a retrieval tool, more transparency is needed.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that is front-loaded with the core purpose. It wastes no words and is efficiently structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with two parameters and an output schema, the description is mostly adequate. However, it lacks any behavioral or usage context that could improve completeness, such as whether results are sorted by date.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with both parameters described. The description adds no additional meaning beyond the schema, so it meets the baseline but does not enhance understanding.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states it retrieves recently added content from Plex, specifying the resource and context. It effectively distinguishes from sibling tools like tautulli_most_watched and tautulli_history, which focus on different metrics.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for seeing new content but provides no explicit guidance on when to use this tool versus alternatives such as tautulli_search or tautulli_history. It lacks when-not-to-use guidance or prerequisites.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_server_infoA

Get Plex server identity — name, version, platform, and connection details.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It clearly states it returns identity details, implying a read-only operation. No side effects or auth requirements are mentioned, but for a simple info retrieval, this is adequate.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Single sentence, front-loaded with action and resource, no waste. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given no parameters and an output schema (not shown), the description covers the return values explicitly. It is fully complete for a simple info retrieval tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has no parameters, so schema coverage is 100%. With 0 parameters, baseline is 4. The description adds no parameter info, but none is needed.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'Get Plex server identity — name, version, platform, and connection details' uses a specific verb and resource, clearly distinguishing it from sibling tools like tautulli_activity or tautulli_history, which serve different purposes.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies its use for retrieving server identity, and given it has no parameters and no siblings with similar purpose, the context is clear. However, it lacks explicit when-not-to-use or alternative guidance.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_statusA

Check Tautulli server configuration and reachability.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, and the description does not disclose behavioral traits such as what the output contains, whether it requires authentication, or what 'reachability' entails. The presence of an output schema partially compensates, but the description still lacks detail.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, clear sentence with no wasted words, making it highly concise and well-structured.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has no parameters and an output schema exists, the description is largely complete. However, it could benefit from specifying what the output contains (e.g., config details, status indicators).

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has zero parameters, and the description adds no parameter information, which is acceptable as the schema is fully descriptive. Baseline for zero parameters is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the verb 'check' and the resource 'Tautulli server configuration and reachability'. It effectively distinguishes from sibling tools like tautulli_server_info and tautulli_activity.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides no guidance on when to use this tool versus alternatives, such as tautulli_server_info for detailed information or other tools for specific metrics.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_stream_dataA

Get detailed stream performance data for diagnosing Plex playback issues.

Use row_id from history or session_key from current activity to fetch detailed performance metrics including bitrate, bandwidth, codec information, and connection details.

ParametersJSON Schema
NameRequiredDescriptionDefault
row_idNoThe history row ID (from tautulli_history output).
session_keyNoThe current session key (from tautulli_activity).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations, the description carries full burden. It discloses the tool returns performance metrics (bitrate, bandwidth, codec info, connection details) and implies read-only behavior, though it does not explicitly state side effects or permissions.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences, front-loaded with purpose, followed by usage guidance. No redundancy or unnecessary words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool's simplicity (2 parameters, output schema exists), the description adequately explains input sources and output data types, leaving no critical gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, baseline 3. The description adds value by clarifying that row_id comes from tautulli_history and session_key from tautulli_activity, which is not fully detailed in the schema descriptions.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool fetches detailed stream performance data for diagnosing Plex playback issues, distinguishing it from sibling tools like tautulli_activity (current activity) and tautulli_history (historical logs).

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description explicitly tells when to use (diagnosing playback issues) and how (using row_id or session_key), but does not specify when not to use or mention alternative tools beyond the source IDs.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_stream_resolutionB

Get source vs delivered resolution analysis — shows what quality your library serves and what clients actually receive.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoTime range in days (default 30).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description carries full burden but does not disclose safety profile, permissions, or side effects. It only states the analysis function without mentioning read-only or destructive behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence that front-loads the core purpose. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the tool has only one parameter and an output schema, the description provides sufficient context for basic use. However, it lacks usage guidance and behavioral details, though the output schema mitigates the need for return value explanation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with a description for the single parameter 'days'. The tool description adds no additional meaning beyond the schema, achieving the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the tool retrieves a 'source vs delivered resolution analysis', indicating a specific verb and resource. It distinguishes from siblings like tautulli_transcode_stats by focusing on resolution comparison rather than transcode decisions.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives such as tautulli_transcode_stats or other analysis tools. The description does not mention prerequisites or context for invocation.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_transcode_statsA

Get direct play vs transcode breakdown by platform — shows which devices cause the most transcoding load.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNoTime range in days (default 30).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

With no annotations provided, the description alone must convey behavioral traits. It indicates a read operation but lacks details on data aggregation, refresh rate, or any side effects. The description is somewhat transparent but lacks depth.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is concise, consisting of one sentence with a dash for additional context. It is front-loaded with the key action. While effective, a slightly more structured format could improve readability.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the simple input (one optional parameter) and presence of an output schema, the description is mostly complete. It explains what the tool returns (direct play vs transcode breakdown by platform) but could mention that output schema exists or specify the exact fields.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage for the 'days' parameter, including a clear description and default. The tool description adds no further meaning beyond what the schema provides, fitting the baseline for high coverage.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the specific action ('Get direct play vs transcode breakdown by platform') and identifies the resource ('devices'). It effectively distinguishes from sibling tools like tautulli_platform_stats by focusing on transcoding load.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies usage for analyzing transcode versus direct play, but it does not explicitly state when to use this tool over alternatives like tautulli_platform_stats or tautulli_activity. No exclusions or alternative tool references are given.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

tautulli_user_statsA

Get per-user watch statistics — total plays, watch time, last seen.

ParametersJSON Schema
NameRequiredDescriptionDefault
userNoFilter to a specific username. If empty, shows all active users.
daysNoTime range in days for stats (default 30).

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

No annotations are provided, so the description carries the full burden of behavioral disclosure. It only mentions what statistics are returned but does not specify whether it lists all active users by default, any authentication requirements, rate limits, or side effects.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, concise sentence of 11 words that efficiently communicates the tool's purpose and output. It is front-loaded with the action and resource.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given the existence of an output schema, the description need not detail return values. It covers the core purpose and statistics. However, it could be more complete by noting that it shows all active users by default, especially given the many sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% description coverage for both parameters, so the schema already explains them well. The description does not add extra meaning beyond what is in the schema, warranting the baseline score.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose5/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description clearly states the action 'Get' and the resource 'per-user watch statistics', listing specific data points (total plays, watch time, last seen). It effectively distinguishes from sibling tools like tautulli_library_stats which focuses on library-level stats.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description implies the tool is for per-user watch statistics but provides no explicit guidance on when to use it versus alternatives like tautulli_history or tautulli_most_watched. No exclusions or when-not-to-use scenarios are mentioned.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 2 tool updatesv1.2.0
    • Changedtautulli_history2 fields changed
      • addedInput schema / properties / include_ip
        Added value: +{
        +  "default": false,
        +  "description": "Also show the client IP address per record. Off by default —\nIP addresses are personally identifying, so opt in when you need them.",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / include_performance
        Added value: +{
        +  "default": false,
        +  "description": "Also fetch stream bitrate per record via get_stream_data\n(makes one extra API call per record — use with small lengths).",
        +  "type": "boolean"
        +}
    • Addedtautulli_stream_data
  2. 11 tool updatesv1.0.0
    • Changedtautulli_history5 fields changed
      • addedInput schema / properties / length / description
        Added value: +"Number of records to return (default 10, max 50)."
      • addedInput schema / properties / media_type / description
        Added value: +"Filter by type: \"movie\", \"episode\", \"track\" (audiobook)."
      • addedInput schema / properties / search / description
        Added value: +"Text search in titles."
      • addedInput schema / properties / start_date / description
        Added value: +"Only show history from this date (YYYY-MM-DD)."
      • addedInput schema / properties / user / description
        Added value: +"Filter by username."
    • Changedtautulli_most_watched3 fields changed
      • addedInput schema / properties / category / description
        Added value: +"Content category — \"tv\", \"movies\", \"music\", or \"users\" (top users)."
      • addedInput schema / properties / days / description
        Added value: +"Time range in days (default 7)."
      • addedInput schema / properties / stat_type / description
        Added value: +"Sort by \"plays\" (total plays) or \"duration\" (total watch time)."
    • Changedtautulli_platform_stats1 field changed
      • addedInput schema / properties / days / description
        Added value: +"Time range in days (default 30)."
    • Changedtautulli_plays_by_date1 field changed
      • addedInput schema / properties / days / description
        Added value: +"Number of days to show (default 14, max 90)."
    • Addedtautulli_plays_by_day_of_week
    • Addedtautulli_plays_by_hour
    • Addedtautulli_recently_added
    • Addedtautulli_search
    • Changedtautulli_stream_resolution1 field changed
      • addedInput schema / properties / days / description
        Added value: +"Time range in days (default 30)."
    • Changedtautulli_transcode_stats1 field changed
      • addedInput schema / properties / days / description
        Added value: +"Time range in days (default 30)."
    • Changedtautulli_user_stats2 fields changed
      • addedInput schema / properties / days / description
        Added value: +"Time range in days for stats (default 30)."
      • addedInput schema / properties / user / description
        Added value: +"Filter to a specific username. If empty, shows all active users."
  3. 11 tool updatesv0.1.0
    • First observedtautulli_activity
    • First observedtautulli_history
    • First observedtautulli_library_stats
    • First observedtautulli_most_watched
    • First observedtautulli_platform_stats
    • First observedtautulli_plays_by_date
    • First observedtautulli_server_info
    • First observedtautulli_status
    • First observedtautulli_stream_resolution
    • First observedtautulli_transcode_stats
    • First observedtautulli_user_stats

TDQS

A3.7/5.0

Scored across 16 tools

Disambiguation5/5

Each tool targets a distinct aspect of Plex monitoring: activity, history, various statistics, search, server info, etc. Descriptions clearly differentiate them, minimizing confusion.

Naming Consistency5/5

All tools follow a consistent 'tautulli_<descriptive_name>' pattern using lowercase with underscores. No mixing of conventions.

Tool Count5/5

With 16 tools, the set is well-scoped for a monitoring/stats server. It covers essential queries without being overwhelming.

Completeness5/5

The tool set covers a comprehensive range of monitoring needs: current activity, history, various statistics, search, server info, stream performance, and user stats. No obvious gaps for the stated domain.

Maintenance

ActivitySlowing
ResponsivenessSlow

Related MCP Connectors

Related MCP Servers