Skip to main content
Glama
Grinv

TMDB MCP Server

Discover movies (filters)

discover_movies
Read-only

Find movies by applying structured filters: genres, year, rating, runtime, cast, crew, keywords, watch providers, and certification. Solves targeted searches like 'popular sci-fi from the 1990s rated above 7 available on Netflix'.

Instructions

Find movies by structured filters instead of a title query: genres (include/exclude), year or release-date range, rating range, vote count, runtime range, original language, cast/crew/people, companies, keywords, watch providers, certification, a region code (minor effect only — see its own description), an adult-content toggle, and sort order. 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. Use for 'popular sci-fi from the 1990s rated above 7 available on Netflix', or for a specific person's work in one genre — 'which of this director's/actor's/composer's films are animated' — via with_crew/with_cast/with_people + with_genres together; get_person_credits has no genre filter, so this combination is the right tool for that question, not that one. Resolve ids with get_movie_genres, search_people, search_keywords, search_companies, 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.
regionNoISO-3166-1 country code. TMDB's docs describe this as picking which country's release date counts as a movie's release date for date-based filtering (year, release_date_gte/lte) — but live testing found no measurable effect there; use certification_country instead to scope the certification filter, which does work. The one confirmed live effect: supplying any value (even one TMDB doesn't recognize) shifts total_results by a handful of titles versus omitting this field entirely, even with no other filter — real but too small and unexplained to use for precise filtering. Movie-only.
sort_byNoSort order. Defaults to TMDB's own default (roughly popularity-based) if omitted.
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_castNoComma-separated TMDB person ids, restricted to cast (actor) roles. Use search_people to resolve an actor's name to their id.
with_crewNoComma-separated TMDB person ids, restricted to crew roles (e.g. a director). Use search_people to resolve a name to their id.
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_peopleNoComma-separated TMDB person ids, matching either a cast or crew role. Use search_people to resolve a name to their id.
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_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
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, so the description's job is partially reduced. However, it adds important behavioral details: certification and with_watch_providers error if missing country/region, but an unrecognized certification_country silently disables the filter. It also explains the minor effect of region. These go beyond the 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 lengthy but well-structured: purpose first, then examples, then key gotchas. Every sentence adds value, but it could be slightly more concise by grouping related filters. Overall, it earns its length.

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 has 26 parameters, no required params, and an output schema exists, the description is remarkably complete. It covers edge cases (unrecognized certification_country, region's minor effect), integration with sibling tools (search_people, search_keywords, etc.), and provides enough context for an agent to use it correctly without additional lookups.

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 100%, but the description adds significant meaning beyond the schema. For example, certification explains case-insensitivity, the lack of fallback, and that it silently fails with an unrecognized country. region details its live-tested minimal effect. Many parameters get richer context that clarifies behavior and integration points.

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

Purpose5/5

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

Description clearly states the tool finds movies by structured filters, not title queries, and gives examples like 'popular sci-fi from the 1990s'. It distinguishes from get_person_credits by noting that tool lacks a genre filter. The verb 'Discover movies (filters)' and the first sentence establish the resource and action with high specificity.

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?

Explicitly says when to use: 'find movies by structured filters', and provides concrete use cases: 'popular sci-fi...' and 'which of this director's/actor's/composer's films are animated'. It contrasts with get_person_credits, giving a clear when-not and alternative. Also gives guidance on certification_country usage and fallback behavior.

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