Skip to main content
Glama

mcp-plex

MCP server for Plex Media Server, focused on media discovery, search, library management, and playback control. 24 granular tools designed for use with Claude and other LLM agents.

Prerequisites

Related MCP server: plex-mcp

Setup

1. Get Your Plex Token

The easiest way to find your Plex token:

  1. Sign in to Plex Web App

  2. Browse to any media item and click Get Info (or ... > Get Info)

  3. Click View XML in the bottom-left

  4. In the URL bar, find the X-Plex-Token= parameter -- that's your token

Alternatively, check the Plex support article for other methods.

2. Install

cd mcp-plex
uv sync

3. Configure Environment Variables

Set these before running the server:

export PLEX_SERVER_URL="http://your-plex-server:32400"
export PLEX_TOKEN="your_plex_token"

4. Test the Connection

uv run mcp-plex-server

The server connects to your Plex server on startup and verifies the token. If the connection fails, check that your server URL and token are correct.

Claude Desktop / Claude Code Configuration

Add to your MCP server config. If installed from PyPI:

{
  "mcpServers": {
    "plex": {
      "command": "uvx",
      "args": ["mcp-plex-server"],
      "env": {
        "PLEX_SERVER_URL": "http://your-plex-server:32400",
        "PLEX_TOKEN": "your_plex_token"
      }
    }
  }
}

Or if running from a local clone:

{
  "mcpServers": {
    "plex": {
      "command": "uv",
      "args": ["--directory", "/path/to/mcp-plex", "run", "mcp-plex-server"],
      "env": {
        "PLEX_SERVER_URL": "http://your-plex-server:32400",
        "PLEX_TOKEN": "your_plex_token"
      }
    }
  }
}

Tools

Discovery

Tool

Parameters

Description

search_media

query, media_type="", limit=20

Search across all libraries. Optional type filter: "movie", "show", "episode", "artist", "album", "track".

get_recently_added

limit=20, library_name=""

Recently added media, optionally filtered to a library.

get_on_deck

limit=10

Continue watching / next episode list.

Library Browsing

Tool

Parameters

Description

get_libraries

(none)

List all library sections with types and item counts.

get_library_contents

library_name, sort="titleSort", limit=50

Browse a library. Sort by title, date added, year, or rating.

get_media_details

rating_key

Full details for one item: summary, genres, cast, directors, ratings.

get_library_stats

library_name=""

Item counts and stats for one or all libraries.

Shows

Tool

Parameters

Description

get_seasons

rating_key

List seasons for a TV show.

get_episodes

rating_key, season_number=0

List episodes (all or by season).

Collections

Tool

Parameters

Description

get_collections

library_name

List collections in a library (includes smart/regular type).

get_collection_items

rating_key

Get collection details and all items it contains.

create_collection

library_name, title, rating_keys

Create a regular collection from specific items.

create_smart_collection

library_name, title, filters, libtype="", sort="", limit=0

Create a smart (filter-based) auto-updating collection.

edit_collection

rating_key, title="", summary=None, sort_order="", mode=""

Edit collection metadata (title, summary, sort, display mode).

add_to_collection

rating_key, item_rating_keys

Add items to a regular collection.

remove_from_collection

rating_key, item_rating_keys

Remove items from a regular collection.

delete_collection

rating_key

Delete a collection (does not affect the media items).

Playlists

Tool

Parameters

Description

get_playlists

(none)

List all playlists on the server.

get_playlist_items

rating_key

Get items in a playlist.

Watch State

Tool

Parameters

Description

mark_watched

rating_key

Mark a movie, episode, or track as fully watched.

mark_unwatched

rating_key

Mark an item as unwatched, resetting progress.

remove_from_continue_watching

rating_key

Remove a movie or episode from Continue Watching / On Deck.

set_playback_progress

rating_key, progress_ms

Set playback position in milliseconds (must be > 0).

Management

Tool

Parameters

Description

scan_library

library_name

Trigger a background library scan.

Development

uv run mcp-plex-server              # Run the server
uv run ruff check src/       # Lint
uv run ruff format src/      # Format
uv run pyright src/          # Type check

Pre-commit Hooks

This project uses lefthook for pre-commit checks. Install with brew install lefthook (or see other install methods), then:

lefthook install

Available Tools

25 tools
add_to_collectionA

Add items to a regular (non-smart) collection.

rating_key: the collection's rating key. item_rating_keys: list of rating keys for items to add.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes
item_rating_keysYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations are provided, and the description lacks behavioral details such as mutation consequences, error handling, or idempotency, relying solely on the verb 'add.'

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 succinct with two lines for purpose and parameters, no redundant information, and front-loaded with the core purpose.

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?

While the parameters are explained, the description lacks information on success/failure behavior, idempotency, or prerequisites, and doesn't sufficiently guide selection among siblings.

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 0%, but the description explains both parameters (rating_key as collection's rating key, item_rating_keys as list of item rating keys), adding meaning beyond the schema names.

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 states 'Add items to a regular (non-smart) collection,' clearly specifying the action and resource, and distinguishes from smart collections.

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 mentions 'regular (non-smart) collection,' providing context but no explicit when-to-use or when-not-to-use compared to sibling tools like remove_from_collection or create_collection.

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

create_collectionA

Create a new regular collection in a Plex library.

library_name: exact library name (e.g. "Movies"). title: name for the collection. rating_keys: list of rating keys for items to include.

ParametersJSON Schema
NameRequiredDescriptionDefault
library_nameYes
titleYes
rating_keysYes

TDQS

A3.5/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 side effects (e.g., whether it overwrites existing collections), return values, error conditions, or permissions needed. The description only states the basic action.

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 extremely concise, using a bullet-point style. The first sentence states the purpose, followed by parameter details. Every sentence is necessary and there is no redundancy.

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?

While the description covers the basic usage, it lacks information about the return value (e.g., created collection ID), error handling, or prerequisites (e.g., library existence). For a create tool with no output schema, this is a notable gap.

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?

All three required parameters are described in plain language: 'exact library name', 'name for the collection', and 'list of rating keys for items to include'. This adds meaning beyond the schema titles, which is valuable given 0% schema description 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 tool creates a new regular collection in a Plex library, specifying the type ('regular') to distinguish it from the sibling 'create_smart_collection'. The verb 'create' and resource 'collection' are specific.

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 is provided on when to use this tool versus siblings like 'create_smart_collection' or 'add_to_collection'. There is no explicit when-to-use or when-not-to-use advice, leaving the agent without decision support.

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

create_smart_collectionA

Create a smart (filter-based) collection that auto-updates.

library_name: exact library name (e.g. "Movies"). title: name for the collection. filters: dict of field/value pairs with optional operators. Operators are appended to the key: ">>" = greater than, "<<" = less than, "!" = not. Examples: {"genre": "Action"} -- genre is Action {"year>>": 2000} -- year greater than 2000 {"genre!": "Horror"} -- genre is not Horror {"genre": "Action", "year>>": 2000} -- both conditions Common fields: genre, year, decade, rating, audienceRating, contentRating, resolution, studio, label, director, actor. libtype: content type to filter (required for show libraries). "movie", "show", "episode", "season", "artist", "album", "track". sort: sort order (e.g. "titleSort", "year:desc", "rating:desc"). limit: max items (0 = unlimited).

ParametersJSON Schema
NameRequiredDescriptionDefault
library_nameYes
titleYes
filtersYes
libtypeNo
sortNo
limitNo

TDQS

A3.9/5.0
Behavior2/5

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

With no annotations, the description should disclose side effects, idempotency, and permissions. It explains filter behavior well but omits whether creation overwrites existing collections or requires specific permissions.

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 and front-loaded with the purpose, but the examples for filters take up space. Overall efficient and well-structured.

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?

The description covers parameters thoroughly but does not mention the return value (e.g., collection ID or success flag) and lacks error handling details. Given no output schema, this is a gap.

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

Parameters5/5

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

Schema description coverage is 0% so the description compensates fully: each parameter is explained with examples, operators, and common values, especially the filters parameter with detailed operator syntax and examples.

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 creates a smart (filter-based) collection that auto-updates, distinguishing it from sibling tool create_collection which likely creates static collections.

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 when to use this tool (for dynamic, filter-based collections) but does not explicitly contrast with create_collection or give when-not-to-use conditions.

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

delete_collectionB

Delete a collection from the Plex library.

This permanently removes the collection. The media items themselves are not affected.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

Without annotations, the description carries the full burden. It notes permanent deletion and that media items are unaffected, but fails to disclose auth needs, error handling, or effect on related data.

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 that front-load the key action and add one crucial behavioral detail, with no unnecessary words.

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?

For a simple deletion tool with one parameter and an output schema, the description is adequate but missing details on parameter meaning and error states, especially given no annotations.

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

Parameters1/5

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

The input schema has 0% description coverage for the single parameter 'rating_key', and the description adds no explanation of what this key represents or how to obtain it.

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 deletes a collection from the Plex library, using a specific verb and resource, and distinguishes from sibling tools like add_to_collection and create_collection.

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 mentions permanent removal but provides no guidance on when to use this tool versus alternatives such as remove_from_collection, nor any prerequisites or context.

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

edit_collectionB

Edit a collection's metadata.

rating_key: the collection's rating key. title: new title (empty = no change). summary: new summary (None = no change, empty string = clear). sort_order: "release", "alpha", or "custom" (empty = no change). mode: "default", "hide", "hideItems", or "showItems" (empty = no change).

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes
titleNo
summaryNo
sort_orderNo
modeNo

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only explains parameter semantics but fails to mention mutation behavior, permission requirements, reversibility, error handling (e.g., invalid rating_key), or whether the tool returns any confirmation. This is a significant gap for a mutation tool.

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 concise and front-loaded with the purpose. Parameter explanations are inline and avoid redundancy. Every sentence serves a purpose, with no wasted words.

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?

The description covers all five parameters adequately but omits information about the output or return value, error conditions, and how this tool fits into the broader collection workflow. Given no output schema, the description should at least hint at the result (e.g., confirms success). This limits completeness.

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

Parameters5/5

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

The description adds substantial meaning beyond the input schema, which has 0% coverage. It clarifies default behaviors (e.g., empty string means no change for title, while None vs empty string for summary have different effects) and enumerates valid values for sort_order and mode. This directly compensates for the schema's lack of descriptions.

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

Purpose4/5

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

The description 'Edit a collection's metadata' clearly identifies the verb (edit) and resource (collection). The subsequent parameter list clarifies which metadata fields are editable. However, it does not explicitly distinguish from sibling tools like create_collection or delete_collection, though the verb alone implies modification.

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?

There is no guidance on when to use this tool versus alternatives (e.g., add_to_collection for adding items, delete_collection for removal). No preconditions or context are provided, leaving the agent to infer usage from the parameter list alone.

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

get_collection_itemsB

Get the items in a Plex collection with full collection details.

Provide the rating_key of a collection. Returns collection metadata (title, smart, mode, sort, labels) and the media items it contains.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It describes the return value but does not disclose whether the operation is read-only, has side effects, or requires specific permissions.

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?

Two concise sentences with the action front-loaded. No unnecessary words, though the meaning is clear.

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 get operation with one required parameter and no output schema, the description covers the purpose, required input, and return contents. Lacks only behavioral safety context.

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

Parameters2/5

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

The only parameter 'rating_key' has no schema description (0% coverage). The description simply says to provide it, adding minimal meaning beyond listing the parameter. No format or example is given.

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

Purpose4/5

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

Clearly states 'Get the items in a Plex collection with full collection details', specifying the resource and action. Does not explicitly distinguish from sibling tools like 'get_collections' but the intent is clear.

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?

Tells the agent to provide the rating_key, which is necessary, but does not provide guidance on when to use this tool versus alternatives like 'get_collections' or 'get_playlist_items'.

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

get_collectionsA

List collections in a Plex library.

Returns collection names, types (smart/regular), item counts, and rating keys. Use get_collection_items to see the contents.

ParametersJSON Schema
NameRequiredDescriptionDefault
library_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/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 burden. It states the returns (names, types, counts, keys), implying a read operation, but doesn't explicitly confirm no side effects or other behavioral traits.

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 sentences: first states purpose, second lists return fields and a cross-reference. Every sentence is valuable, no wasted words, and the key info is front-loaded.

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 output schema exists, return values are adequately described. The tool is simple (one parameter, no nesting). Minor gaps: no guidance on error cases (e.g., invalid library_name) but sufficient for typical usage.

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

Parameters2/5

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

The schema has 0% description coverage; library_name is not explained beyond its title. The description mentions 'in a Plex library' but does not clarify what valid values are or how to obtain the library name.

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 lists collections in a Plex library, specifying the verb 'list' and resource 'collections'. It distinguishes from siblings like get_collection_items by mentioning that tool for contents.

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 directs to use get_collection_items for seeing contents, providing an alternative use case. However, it lacks broader when-to-use guidance or exclusions.

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

get_episodesA

Get episodes for a TV show or season.

Provide the rating_key of a show. Optionally filter by season_number (0 = all seasons). Returns episode titles, numbers, and durations.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes
season_numberNo

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?

Without annotations, the description carries the full burden of behavioral disclosure. It states that the tool 'Returns episode titles, numbers, and durations,' which is useful, but does not clarify that this is a read-only operation or disclose any side effects, error conditions, or permission requirements.

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 two sentences with no wasted words. The first sentence states purpose, the second provides instructions and output details. It is front-loaded and efficient.

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 that an output schema exists (not shown), the description appropriately describes return fields. It covers the essential inputs and purpose. However, it could mention potential issues like invalid rating_key or permission requirements, but for a straightforward retrieval tool, it is largely complete.

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 0% description coverage, yet the tool description adds meaningful context: rating_key is for the show, and season_number is optional with default 0 meaning all seasons. This provides clarity beyond the schema titles alone.

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's purpose: 'Get episodes for a TV show or season.' It specifies the required input (rating_key) and optional filter (season_number), and mentions the output (episode titles, numbers, durations). This distinguishes it from siblings like get_seasons, which would handle seasons instead of episodes.

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 provides clear instructions on how to use the tool: 'Provide the rating_key of a show. Optionally filter by season_number (0 = all seasons).' It implies usage context for retrieving episodes but does not explicitly state when not to use it or mention alternative tools like get_seasons for season-level data.

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

get_librariesA

List all library sections on the Plex server.

Returns library names, types (movie, show, artist), item counts, and last updated timestamps.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the burden. It clearly indicates a read-only list operation with no side effects, but does not explicitly state read-only or safety profile. However, the simple listing behavior is well conveyed.

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 sentences, front-loaded with the main action, no filler. Every sentence adds value (purpose and return details).

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?

For a simple list tool with no parameters and an output schema, the description fully covers what the tool does and what it returns. No 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?

There are no parameters (0-param tool), and schema coverage is 100%. The description adds context about the return data beyond the empty schema, which is adequate baseline for zero-param tools.

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 lists all library sections on the Plex server, specifying exact return fields (names, types, counts, timestamps). This distinguishes it from sibling tools like get_library_contents and get_collections.

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?

No explicit guidance on when to use this tool versus siblings. Usage is implied by the resource name and description, but no alternatives or exclusions are mentioned.

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

get_library_contentsA

Browse the contents of a specific Plex library.

library_name must match exactly (e.g. "Movies", "TV Shows"). Use get_libraries to see available names.

Sort options: "titleSort" (default), "addedAt:desc", "year:desc", "rating:desc", "audienceRating:desc".

ParametersJSON Schema
NameRequiredDescriptionDefault
library_nameYes
sortNotitleSort
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/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 discloses that library_name must match exactly and gives sort options and limit default. However, it omits behavioral traits like error handling for missing libraries, pagination behavior, or read-only nature.

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 brief and well-structured, with purpose stated first, followed by bullet points for sort options. Every sentence adds value 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 3 parameters and an output schema, the description covers essential usage (name matching, sort, limit). It omits error cases but is sufficient for a browsing tool. The output schema likely documents return values, so lack of return description is acceptable.

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

Parameters5/5

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

With 0% schema description coverage, the description compensates fully by explaining library_name (exact match, reference to get_libraries), sort (enumerating valid options), and limit (default 50). This adds substantial meaning beyond the bare schema.

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 browses contents of a specific Plex library, using the verb 'browse' and resource 'contents of a specific Plex library'. It differentiates from siblings by focusing on library contents rather than collections or specific media types, with guidance on exact name matching.

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?

It provides clear context by specifying that library_name must match exactly and advises using get_libraries to see available names. However, it does not explicitly state when not to use this tool or provide direct alternatives among siblings.

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

get_library_statsA

Get statistics for Plex libraries.

Without library_name: returns item counts for all libraries. With library_name: returns detailed stats for that library.

ParametersJSON Schema
NameRequiredDescriptionDefault
library_nameNo

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?

The description accurately describes the output in both cases (item counts vs detailed stats), implying a read-only operation. No annotations are present, but the description is sufficiently transparent about 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 concise with two sentences that are front-loaded and every word adds value. No wasted or redundant information.

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 presence of an output schema, the description is complete enough: it covers the two modes of operation and the parameter semantics, leaving the output structure to the schema.

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 description adds significant meaning to the library_name parameter beyond the schema, explaining that omitting it returns all-library counts and including it returns detailed stats for that library. This compensates for the 0% schema description 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 tool gets statistics for Plex libraries, and explains the difference between calling with and without the library_name parameter. This distinguishes it from sibling tools like get_libraries or get_library_contents.

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 provides clear usage context by explaining the two modes based on the parameter, but does not explicitly state when not to use this tool or mention alternatives.

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

get_media_detailsA

Get detailed information about a specific media item.

Use the rating_key from search or browse results. Returns full details including summary, genres, cast, directors, and ratings.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations, the description must convey behavioral traits. It indicates the tool returns data ('Returns full details...') but does not explicitly state side effects (likely none) or any prerequisites like authentication. The read-only nature is implied but not stated.

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 two sentences, each adding value: the first states purpose, the second provides usage guidance and output highlights. No 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 (one parameter, no output schema, no annotations), the description covers purpose, parameter source, and key output details. It is complete enough for an agent to use effectively.

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 0% coverage (no description for 'rating_key'). The description compensates by explaining that the key comes from 'search or browse results', adding meaning beyond the schema's name and type. However, it lacks format or constraints.

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 detailed information' and the target 'specific media item'. It is specific and distinct from sibling tools that deal with collections, libraries, etc.

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 mentions using 'rating_key from search or browse results', which provides context on how to obtain the required parameter. However, it does not explicitly state when to avoid using this tool or mention alternative tools.

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

get_on_deckB

Get the "On Deck" continue-watching list from Plex.

Returns items that are partially watched or next episodes in a series.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations provided, the description covers the basic behavior (returns a list) but lacks details on authentication needs, rate limits, or any side effects. The description is 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?

Two sentences, 22 words, no redundancy. The purpose is stated upfront, and the description is highly efficient.

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 low complexity and presence of an output schema, the description covers the main function. However, the omission of the 'limit' parameter and any context on pagination or default behavior leaves a gap.

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

Parameters1/5

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

The description does not mention the 'limit' parameter at all, and the schema description coverage is 0%. Since there is only one parameter, the description fails to add any meaning beyond the schema.

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 the 'On Deck' continue-watching list from Plex, specifying it returns partially watched items or next episodes, which effectively distinguishes it from sibling tools like 'get_recently_added' or 'get_library_contents'.

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. It does not mention prerequisites, exclusions, or situations where another tool would be more appropriate.

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

get_playlist_itemsC

Get the items in a Plex playlist.

Provide the rating_key of a playlist. Returns the media items contained in the playlist.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden. It only hints at a read operation ('Returns the media items') but does not disclose permissions, side effects, or behavior in edge cases.

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 three sentences and front-loaded with the action. It is efficient and contains no extra fluff.

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 simplicity (one parameter, output schema exists), the description covers the core purpose. However, it lacks guidance on error handling, empty results, or differentiation from 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?

With 0% schema coverage, the description adds meaning by explaining that rating_key is the identifier of the playlist. However, it does not provide format examples or further details beyond the parameter name.

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

Purpose4/5

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

The description uses a specific verb-resource combination ('Get the items in a Plex playlist') and clearly states what the tool returns. It distinguishes from siblings (e.g., get_playlists lists playlists, this gets items) but does not explicitly differentiate.

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?

It states the required input (rating_key) but provides no guidance on when to use this tool versus alternatives or when not to use it. Lacks context for selection.

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

get_playlistsA

List all playlists on the Plex server.

Returns playlist names, types, item counts, and durations.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 the description carries the full burden. It mentions return fields (names, types, counts, durations) but does not mention authentication, rate limits, or side effects. It is a read operation, but not explicitly stated.

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 sentences, to the point, with the main action in the first line. 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?

Has an output schema, but the description already summarizes return fields. For a simple list tool with no params, it is mostly complete; minor gap: no error conditions or limitations mentioned.

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, so schema coverage is 100% trivially. The description adds value by listing return fields, which is helpful. Baseline for 0 params 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 it lists all playlists on the Plex server, using a specific verb and resource. It distinguishes from siblings like get_collections or get_library_contents by focusing on playlists.

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. For example, it doesn't clarify when to use get_playlists instead of search_media or get_collections, leaving the agent without context.

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

get_recently_addedC

Get recently added media from Plex.

Returns the most recently added items across all libraries, or filtered to a specific library by name (e.g. "Movies", "TV Shows").

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
library_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/5.0
Behavior2/5

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

No annotations provided, so the description must carry the burden. It states it returns recently added items and supports filtering, but does not disclose behaviors like rate limits, maximum items, ordering, or whether all libraries are included by default. The description is minimal for a read operation.

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 with two sentences. The first sentence states the action, and the second adds clarification on filtering. No redundant text, effectively front-loaded.

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?

With two optional parameters and an output schema, the description covers the basic functionality but lacks details on pagination, ordering, and the default behavior of including all libraries. It is adequate for a simple tool but could be more complete.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate. It explains the library_name parameter by giving examples but does not describe the limit parameter beyond its default in the schema. The description adds some value for library_name but is insufficient for limit.

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

Purpose4/5

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

The description clearly states that the tool retrieves recently added media from Plex, with an optional filter by library name. It effectively conveys the verb and resource, but does not explicitly mention chronological ordering, which is implied. It distinguishes from siblings like search_media and get_library_contents.

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 over alternatives. The description implies its use for recently added items, but does not mention when not to use it or provide comparisons with sibling tools like get_libraries or get_library_contents.

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

get_seasonsA

Get the seasons of a TV show.

Provide the rating_key of a show (from search or browse). Returns season numbers, episode counts, and rating keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden but only describes returned data (season numbers, episode counts, rating keys). It does not disclose error conditions, performance characteristics, or authentication needs, but the read-only nature is implied.

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?

Three concise sentences front-loaded with the purpose. Each sentence adds value (action, prerequisite, output). No superfluous text.

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 parameter, output schema exists), the description covers input source and output. It could mention error handling or validity, but is sufficient for basic usage.

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 schema has 0% description coverage, but the description explains that the rating_key should come from 'search or browse', adding meaningful context. The output is also briefly described, helping the agent understand the parameter's role.

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 the seasons of a TV show' and specifies the required input and returned data (season numbers, episode counts, rating keys). The verb 'Get' and resource 'seasons' are specific, distinguishing it from sibling tools like get_episodes.

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 instructs to 'Provide the rating_key of a show (from search or browse)', giving clear context on input source. However, it does not explicitly mention when not to use this tool or alternatives, though the sibling list provides indirect contrast.

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

get_server_versionA

Return the installed version of the mcp-plex-server package.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.7/5.0
Behavior2/5

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

No annotations provided, so the description should disclose behavioral traits like side effects or authorization needs. The description only states it returns a version, with no mention of safety, read-only nature, or other behaviors.

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 action and resource. No 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?

For a simple, parameterless tool with an output schema (not shown), the description provides sufficient context. It tells the agent exactly what the tool returns and implies it is a read operation.

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 no parameters, and the schema coverage is 100%, so baseline 4 applies. The description does not need to add parameter information.

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 returns the installed version of the mcp-plex-server package, using a specific verb ('Return') and resource. It distinguishes from sibling tools that deal with collections, libraries, and 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 guidance on when to use this tool versus alternatives. Since it's a simple version check, usage might be obvious, but the description 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.

mark_unwatchedC

Mark a media item as unwatched, resetting its watch progress.

Works on movies, episodes, and tracks.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.8/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 states the tool resets watch progress, but does not disclose side effects (e.g., whether it removes from continue watching, requires user authentication, or triggers other state changes). This is insufficient for a mutation tool.

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 (two sentences) and front-loads the purpose. However, it is so brief that it sacrifices necessary detail, missing opportunities to elaborate on usage and parameters.

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 one parameter with zero schema coverage, no annotations, and mutates state, the description is incomplete. It does not mention return values, error conditions, prerequisites (e.g., user must be authenticated), or how the rating_key is obtained.

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

Parameters1/5

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

Schema description coverage is 0%, yet the description adds no information about the single parameter 'rating_key'. The parameter is required with no explanation of what it represents or how to obtain it. The description should explain that rating_key identifies the media item.

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: 'Mark a media item as unwatched, resetting its watch progress.' It specifies the resource (media item) and the effect (resetting progress). This distinguishes it from siblings like 'mark_watched' (the opposite) and 'set_playback_progress' (a more general progress adjustment).

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 vs. alternatives like 'remove_from_continue_watching'. The description only states what it does, leaving the agent to infer appropriate contexts without explicit when-to-use or when-not-to-use instructions.

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

mark_watchedB

Mark a media item as fully watched.

Works on movies, episodes, and tracks.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes

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. The description does not disclose behavioral details such as whether it affects 'continue watching' lists, requires specific permissions, or is irreversible.

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?

Extremely concise: two short sentences that front-load the purpose and scope. No redundant information.

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?

Adequate for a simple toggle tool with one param and an output schema. However, it lacks behavioral context and usage guidance, which are important for an agent to decide when to invoke it.

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

Parameters2/5

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

The input schema has one required parameter 'rating_key' with a title but no description. The description adds no additional meaning or constraints beyond what the 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?

Clearly states 'Mark a media item as fully watched' and specifies supported media types (movies, episodes, tracks), effectively differentiating it from siblings like mark_unwatched.

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 like mark_unwatched or set_playback_progress. The description does not provide context or prerequisites.

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

remove_from_collectionA

Remove items from a regular (non-smart) collection.

rating_key: the collection's rating key. item_rating_keys: list of rating keys for items to remove.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes
item_rating_keysYes

TDQS

A4/5.0
Behavior2/5

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

No annotations provided, and description does not disclose side effects, permissions, error handling, or return behavior, leaving gaps in understanding.

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 sentences: first states purpose, second defines parameters. 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?

Adequate for a simple 2-param tool with no output schema, but could mention return value or error cases.

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 0%, but the description explains both parameters (rating_key and item_rating_keys) beyond the schema's type-only definitions.

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 ('Remove items') and the target resource ('regular (non-smart) collection'), distinguishing it from smart collections and siblings like 'add_to_collection'.

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?

Specifies 'regular (non-smart) collection', implying not for smart collections, but lacks explicit when-not or alternatives.

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

remove_from_continue_watchingA

Remove a partially-watched item from the Continue Watching / On Deck list.

Only works on movies and episodes. Does not change the item's watched/unwatched state.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior5/5

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

Since no annotations are provided, the description fully covers behavior: it removes from the list, works only on movies/episodes, and does not alter watched/unwatched state. No contradictions.

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 that front-load the primary action and immediately add important constraints. No unnecessary 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?

For a simple one-parameter removal tool with an output schema, the description is largely complete. However, it could mention how the rating_key is obtained (e.g., from get_on_deck).

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

Parameters2/5

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

The input schema has 0% description coverage for the single parameter 'rating_key'. The description does not add any meaning or format hints for this parameter, leaving the agent to infer its purpose.

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 (remove from Continue Watching/On Deck), specifies the resource scope (partially-watched item), and distinguishes from sibling tools like mark_watched by noting it does not change watched state.

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?

Guidance is implied: use only for movies and episodes, not for changing watched state. However, it doesn't explicitly mention alternatives or when to use other tools like mark_unwatched.

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

scan_libraryB

Trigger a library scan on the Plex server.

This refreshes the library to pick up new or changed media files. The scan runs in the background on the server.

ParametersJSON Schema
NameRequiredDescriptionDefault
library_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description provides minimal additional context: the scan runs in the background. However, it does not disclose potential side effects, authorization needs, or performance impact.

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?

Two sentences, no fluff, and the action is front-loaded. Could be slightly more concise but efficient.

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?

Covers the core action and background behavior but lacks parameter details and usage context. There is an output schema, but the description doesn't mention return values, which is acceptable for a trigger tool.

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

Parameters2/5

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

Schema description coverage is 0%, and the tool description does not elaborate on the library_name parameter (e.g., what values are valid, how to obtain them). It adds no meaning beyond the schema.

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 triggers a library scan on the Plex server and explains it refreshes to pick up new/changed media. It distinguishes from sibling tools that are query or management operations.

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 or when not to use this tool. Does not mention alternatives or prerequisites such as needing library names from get_libraries.

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

search_mediaA

Search for media across all Plex libraries.

Searches movies, shows, music, and other media by title.

Optional media_type filter: "movie", "show", "episode", "artist", "album", "track".

Returns titles, years, ratings, and rating keys for further lookup.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
media_typeNo
limitNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It implies read-only operation but does not explicitly state safety, rate limits, or auth needs. It adds some behavioral context (returns specific fields) but lacks thoroughness.

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?

Three concise sentences with front-loaded purpose, followed by details on filter and return values. 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 presence of an output schema, the description adds useful context on return fields and filter values. It lacks discussion of pagination or error handling, but is adequate for a search 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?

Schema description coverage is 0%, so description must compensate. It explains query (search by title) and media_type (lists allowed values). However, it does not mention the limit parameter, leaving its behavior undocumented.

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 'search' and resource 'media across all Plex libraries'. It distinguishes from sibling tools like get_library_contents by emphasizing cross-library title search.

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?

Provides context on what it searches (movies, shows, etc.) and optional media_type filter, but does not explicitly state when not to use it or mention alternatives among the sibling tools.

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

set_playback_progressA

Set the playback progress for a media item to a specific position.

rating_key: the item's rating key. progress_ms: position in milliseconds (must be > 0). To reset progress to zero, use mark_unwatched instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
rating_keyYes
progress_msYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

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

With no annotations, the description partially covers behavior by noting the progress_ms must be >0 and pointing to mark_unwatched for zero reset, but lacks details on permissions, side effects, or error handling.

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 concise, front-loads the purpose, and has a clean structure: main action, parameter details, and usage note. No unnecessary 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 and an output schema, the description covers the action, parameters, and an important edge case (zero). It lacks potential prerequisites but is largely complete for its scope.

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 0%, so description compensates by explaining rating_key (though minimally) and progress_ms (position in ms with constraint), adding meaningful context beyond the schema.

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 'Set the playback progress' for a media item and distinguishes itself from the sibling tool mark_unwatched for resetting progress to zero.

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

Usage Guidelines5/5

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

The description explicitly tells when to use this tool (set a specific position) and when not to (reset to zero, use mark_unwatched instead), providing clear alternatives.

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. Dates show when Glama detected each change.

  1. 25 tool updatesv0.2.0
    • First observedadd_to_collection
    • First observedcreate_collection
    • First observedcreate_smart_collection
    • First observeddelete_collection
    • First observededit_collection
    • First observedget_collection_items
    • First observedget_collections
    • First observedget_episodes
    • First observedget_libraries
    • First observedget_library_contents
    • First observedget_library_stats
    • First observedget_media_details
    • First observedget_on_deck
    • First observedget_playlist_items
    • First observedget_playlists
    • First observedget_recently_added
    • First observedget_seasons
    • First observedget_server_version
    • First observedmark_unwatched
    • First observedmark_watched
    • First observedremove_from_collection
    • First observedremove_from_continue_watching
    • First observedscan_library
    • First observedsearch_media
    • First observedset_playback_progress

TDQS

A3.6/5.0
Disambiguation5/5

Each tool targets a distinct action (e.g., collection operations, playlist retrieval, library browsing, watch status) with no functional overlap. Even similar operations like add_to_collection vs create_collection are clearly separated.

Naming Consistency5/5

All tool names follow a consistent verb_noun snake_case pattern (e.g., create_collection, get_libraries, mark_watched). No mixed conventions or vague verbs.

Tool Count4/5

25 tools is slightly above the typical 3-15 range, but each tool serves a specific purpose in media management (collections, playlists, libraries, episodes, progress). The count is justified given the breadth of operations, though a few could be merged.

Completeness3/5

The tool surface covers core workflows like collections, libraries, search, and watch status. However, notable gaps exist: no create_playlist or delete_playlist, and no tool to update media metadata (e.g., edit title/summary of a movie). These are common Plex operations.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    MCP server for managing a media server stack (Plex, Radarr, Overseerr, Bazarr, Prowlarr, Trakt.tv) using natural language to browse, request, and discover content.
    12
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server for Plex Media Server that enables natural language interaction with your media library, including search, browse, and chat features via an optional web app.
    22
    2
    MIT

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/obrien-matthew/mcp-plex'

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