Skip to main content
Glama
dustinhansen

Plex MCP Server

by dustinhansen

Watch history

watch_history
Read-onlyIdempotent

Query watch and listen history across all Plex users, filtering by user, library, date range, or specific item to answer whether someone has seen or played something.

Instructions

Watch/listen history across ALL users: who played what, when. Filter by user (name or account id), library, time window (since/until, ISO dates), or a specific item (ratingKey: answers 'has X seen Y?'). Sorted newest first. kind filters the returned page client-side (movie/episode/track). total reflects the unfiltered count.

Input Schema

NameRequiredDescriptionDefault
kindNo
userNo
limitNo
sinceNo
untilNo
offsetNo
libraryNo
ratingKeyNolimit history to one item

Schema Changelog

Changes observed during successful MCP inspections.

  1. First observedv0.9.0

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already cover the safety profile (readOnly, idempotent, non-destructive), and the description adds non-obvious behavior: default sort is newest first, kind is applied client-side to the returned page, and total is the unfiltered count. Those two quirks are genuinely important because they make filtered results look inconsistent with totals; only permission/auth context is absent.

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?

Four tight sentences, each carrying distinct information: scope first, then filters, then sort order, then the two counting/filtering caveats. No restatement of the tool name or filler.

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 an 8-parameter tool with no output schema and thin schema descriptions, the definition covers scope, filtering semantics, sort order, and result-count behavior well. The remaining gap is how limit/offset interact with the client-side kind filter and how to page through the unfiltered set.

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?

With schema description coverage at 13%, the description carries most of the load and does: user accepts a name or account id, since/until are ISO dates, ratingKey means 'has X seen Y', kind is one of movie/episode/track. limit and offset are left unexplained, though their schema defaults, bounds, and names make their meaning mostly inferable.

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?

States a specific verb+resource ("Watch/listen history") with explicit scope ("across ALL users") and an answer shape ("who played what, when"). The all-users framing implicitly separates it from per-user/session siblings like continue_watching and now_playing, and the "has X seen Y?" framing pins down the question it answers.

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?

Gives concrete invocation contexts (filter by user, library, time window, or specific item) and a named use case — answering 'has X seen Y?' via ratingKey. It stops short of naming alternative tools or exclusions (e.g., when to prefer continue_watching instead), so it's clear context rather than full routing guidance.

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