Skip to main content
Glama
Grinv

TMDB MCP Server

Discover movies (filters)

discover_movies
Read-only

Find movies by complex filters: genre, year, rating, runtime, language, cast, crew, providers, keywords, certification. Solves queries like 'popular sci-fi from the 1990s 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/with_watch_providers have validation and silent-fallback rules — see their own field descriptions. 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?

With readOnlyHint=true, the safety profile is already covered, so the description adds value by flagging live-tested quirks: region has 'minor effect only', and certification/with_watch_providers have 'validation and silent-fallback rules'. It does not fully spell out those rules at the top level, but it points to the detailed field descriptions, which is reasonable navigation rather than concealment.

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 front-loaded with the tool's core purpose, then organizes caveats, usage examples, and ID-resolution guidance in a logical flow. Each sentence earns its place; the repeated 'see its own description' pattern avoids duplicating long schema content while still highlighting important behavioral notes.

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 26-parameter tool with an output schema and readOnly/openWorld annotations, the description covers purpose, typical use cases, exclusions, key caveats, and ID-resolution dependencies. The output schema removes the need to describe return values, and the field-level descriptions handle individual parameter details, making the top-level description appropriately 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?

Schema coverage is 100%, so the baseline is 3, and the description adds meaningful combination guidance beyond individual parameter entries: e.g., using with_crew/with_cast/with_people together with with_genres to answer genre-filtered person queries. It also summarizes the filter categories and flags the region parameter as having only a minor effect, which helps the agent reason about parameter choice.

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 opens with a specific verb and resource: 'Find movies by structured filters instead of a title query', which clearly distinguishes this from search_movies and other siblings. It enumerates the exact filter dimensions and explicitly contrasts with get_person_credits for genre-filtered person queries.

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 gives concrete example queries ('popular sci-fi from the 1990s rated above 7 available on Netflix') and explicitly names an alternative tool (get_person_credits) that lacks genre filtering, stating why discover_movies is the right choice. It also tells the agent to resolve IDs via sibling search tools, providing clear when-to-use 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