Skip to main content
Glama
Grinv

TMDB MCP Server

Discover TV shows (filters)

discover_tv
Read-only

Filter TV shows by genre, air date, rating, runtime, network, language, keyword, watch provider, and status to pinpoint series like miniseries or ended kids' shows.

Instructions

Find TV shows by structured filters (genres, first-air year or date range, rating range, vote count, runtime, language, companies, networks, keywords, watch providers, type, status, certification, an adult-content toggle, sort) — but NOT cast/crew/person: this tool doesn't accept those params for TV at all (calling with them is a validation error, not a silent no-op) because TMDB's own /discover/tv would silently ignore them anyway, unlike /discover/movie; to find TV shows featuring someone, call get_person_credits instead and filter its results to media_type 'tv'. certification/with_watch_providers have validation and silent-fallback rules — see their own field descriptions. The TV counterpart of discover_movies; use with_networks for 'HBO shows', with_type='Miniseries' for short/limited series (e.g. 'best miniseries to binge in a weekend'), with_status='Ended' to exclude shows still airing, certification='TV-Y7' + certification_country='US' for 'shows appropriate for a young kid'. Resolve ids with get_tv_genres, search_companies, search_keywords, search_watch_providers.

Input Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
yearNoRelease / first-air year.
sort_byNoSort order. Defaults to TMDB's own default (roughly popularity-based) if omitted. TV's vocabulary differs from discover_movies' — 'name'/'first_air_date' instead of 'original_title'/'primary_release_date', and no 'revenue' (TMDB doesn't track it per-show).
languageNoOverride the response language (ISO-639-1, optionally with a region), e.g. 'ru-RU' or 'en-US'. Localizes titles/overviews/genre names. Defaults to the server's TMDB_LANGUAGE.
min_votesNoMinimum vote count (filters obscure titles).
with_typeNoRestrict to this TV type — e.g. 'Miniseries' for short/limited series, excluding documentaries/reality/talk shows/etc. that would otherwise mix into a genre/rating search.
max_ratingNoMaximum vote average (0-10).
min_ratingNoMinimum vote average (0-10). Must be <= max_rating if both are given.
max_runtimeNoMaximum runtime in minutes.
min_runtimeNoMinimum runtime in minutes. Must be <= max_runtime if both are given.
with_genresNoComma-separated TMDB genre ids (AND); get ids from get_movie_genres/get_tv_genres.
with_statusNoRestrict to this production status, e.g. 'Ended' to exclude shows still airing (a still-airing show's later seasons could still be mediocre or unfinished).
watch_regionNoTwo-letter ISO-3166-1 country code, e.g. 'US'.
certificationNoFilter by exact age/content certification, e.g. 'PG-13' (movies) or 'TV-Y7' (TV). Requires certification_country, and a certification_country TMDB doesn't recognize silently disables this filter (returns unfiltered results) instead of erroring or matching nothing — double-check the country actually has data for that rating system. Matching is case-insensitive (verified live: 'pg-13' and 'PG-13' return identical results) but must otherwise exactly match one of TMDB's known rating strings for that country's system, punctuation included (e.g. 'PG-13', not 'PG13'). Unlike get_movie/get_tv's own certification field (which falls back to the US rating, then any country, when the requested region has none), this filter has NO fallback: a title with no certification entry at all for the exact country given is silently excluded from results, even if it's certified elsewhere (e.g. has a US rating) — for a country with sparse TMDB certification data, prefer certification_country='US' for broader, more reliable coverage over the user's actual country if completeness matters more than exact local ratings.
include_adultNoInclude adult (NSFW) results. Defaults to false.
with_keywordsNoComma-separated TMDB keyword ids (use search_keywords to resolve names → ids).
with_networksNoComma-separated TMDB TV network ids, e.g. HBO=49, Netflix=213 (verified live). Unlike with_companies/with_keywords/with_people, this server has no name-based resolver for networks — supply the raw TMDB network id directly; a well-known network's id may already be known, otherwise there's no in-server way to look one up.
with_companiesNoComma-separated TMDB production company ids (use search_companies to resolve names → ids).
without_genresNoComma-separated TMDB genre ids to exclude; get ids from get_movie_genres/get_tv_genres.
release_date_gteNoOnly entries released on/after this date (YYYY-MM-DD).
release_date_lteNoOnly entries released on/before this date (YYYY-MM-DD).
without_keywordsNoComma-separated TMDB keyword ids to exclude (use search_keywords to resolve names → ids).
with_watch_providersNoComma-separated TMDB watch-provider ids (use search_watch_providers to resolve a service name, e.g. 'Netflix', to its numeric id); requires watch_region to also be set.
certification_countryNoCountry whose certification system the `certification` filter uses, e.g. 'US'.
with_original_languageNoISO-639-1 original-language code, e.g. 'en', 'ja'.

Output Schema

TableJSON Schema
NameRequiredDescriptionDefault
pageYes
resultsYes
total_pagesYes
total_resultsYes
Behavior5/5

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

Annotations declare readOnlyHint=true and openWorldHint=true, but the description adds substantial behavioral context: calling with cast/crew params causes a validation error (not silent no-op), certification and with_watch_providers have silent-fallback rules, and certification has no fallback for missing country data. These are important non-obvious behaviors not captured by annotations.

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 long but every sentence earns its place. It is front-loaded with the core purpose, then logically flows into exclusions, examples, and resolver references. The structure is purposeful, not padded, and delivers dense, actionable 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 25 parameters, an output schema, and complete annotations, the description covers all critical aspects: use cases, exclusions, error behavior, fallback rules, examples, and id resolution. It is more than sufficient for an agent to select and invoke the tool correctly.

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 description coverage is 100%, so the baseline is 3. The description adds value beyond the schema by explaining the absence of cast/crew parameters as an intentional design choice with validation-error behavior, and by highlighting differences from discover_movies' parameter vocabulary. However, most parameter-specific semantics are already in the schema, so this is a modest increment.

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: 'Find TV shows by structured filters'. It explicitly distinguishes itself from siblings by naming the TV counterpart relationship to discover_movies and by explaining it does NOT handle cast/crew/person, directing users to get_person_credits instead. This is a specific verb+resource+scope with clear sibling differentiation.

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 provides explicit when-to-use and when-not-to-use guidance, including 'to find TV shows featuring someone, call get_person_credits instead'. It offers concrete example use cases (with_networks for 'HBO shows', with_type='Miniseries', with_status='Ended', certification for kids' content) and points to id-resolution tools. This goes far beyond implied usage.

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

Install Server

Other Tools

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/Grinv/tmdb-mcp'

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