Skip to main content
Glama
Grinv

TMDB MCP Server

Discover TV shows (filters)

discover_tv
Read-only

Find TV shows by genre, first-air year, rating range, runtime, language, network, keywords, watch providers, type, status, certification, and adult toggle. Sort results by popularity or vote average.

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 and with_watch_providers each error if given with no certification_country/watch_region at all, but an unrecognized certification_country still silently disables the filter instead of erroring — see certification's own description. 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 and openWorldHint. The description adds critical behavioral details: it explains that TMDB's /discover/tv would silently ignore cast/crew/person but this tool gives a validation error. It details the no-fallback certification behavior, the silent disabling for unrecognized certification_country, and sort vocabulary differences from discover_movies. This is complete transparency beyond annotations.

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 long but well-structured: front-loaded with purpose, then exceptions, then examples, then resolution tips. Every sentence adds value, though some could be more concise. Given the complexity (25 params), it is appropriately sized and organized.

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?

The tool has 25 optional parameters, output schema, and annotations. The description covers many edge cases (silent filter disabling, no-fallback certification, validation errors for invalid params), provides examples, and tells how to resolve ids (get_tv_genres, search_keywords, etc.). It is very complete for the complexity level.

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 coverage is 100%, so baseline is 3. However, the description adds significant meaning: e.g., with_networks has no name-based resolver, certification is case-insensitive with no fallback, with_watch_providers requires watch_region, and it explains the format and constraints for date parameters. Each parameter is enriched with practical usage notes, far exceeding the schema's descriptions.

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

Purpose5/5

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

The description states it finds TV shows by structured filters, lists many filter types, and explicitly distinguishes itself from discover_movies by noting it's the TV counterpart and that cast/crew/person is not accepted. This makes the purpose very clear and differentiates it from siblings.

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 guidance on when to use this tool vs alternatives: it says not to use for cast/crew/person and directs to get_person_credits. It gives specific example queries like 'HBO shows', 'Miniseries', 'Ended', and 'young kid'. It also explains edge cases like certification_country silent disabling and watch_providers requiring region. This is outstanding usage guidance.

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