Skip to main content
Glama
Grinv

TMDB MCP Server

TMDB MCP Server

npm version CI license: MIT MCP Registry tmdb-mcp MCP server

An MCP server for The Movie Database (TMDB): search and look up movies, TV shows and people, and read IMDb / Rotten Tomatoes / Metacritic ratings (via OMDb) in the same call.

The server speaks standard MCP over stdio, so it works with any MCP client (Claude Desktop/Code, Cursor, VS Code, Cline, …).

Once it's connected, just ask your agent in natural language (needs a free TMDB token; see Getting your credentials):

"Search for the movie Dune: Part Two and show its overview, genres and runtime."
"What movies are trending this week?"
"Find TV shows similar to Breaking Bad."
"Who directed Oppenheimer? Show the main cast."
"What's Greta Gerwig's filmography?"
"Discover highly-rated sci-fi movies from the 2010s, sorted by rating."
"Where can I stream The Bear in the US?"
"Show me the trailer for Deadpool & Wolverine."
"List the episodes of Severance season 1."
"Which movie has IMDb id tt0111161?"
"Search for people named Zendaya."
"Get the year, genres and rating for these five movies in one go: Dune, Dune: Part Two, Arrival, Sicario and Blade Runner 2049."
"What are the best limited series to binge over a weekend?"
"What TV shows can I watch with my 9-year-old kid?"
"What movies has A24 produced?"
"What are Tarantino's best-rated crime movies?"
"Who composed the music for My Neighbor Totoro, and what else has he scored?"

With an optional (free) OMDb key, ratings are added too:

"What are the IMDb, Rotten Tomatoes and Metacritic scores for The Godfather?"
"Compare the critics' scores for Barbie and Oppenheimer."

Install

Add it to your MCP client's config. The only required credential is a TMDB v4 Read Access Token; OMDB_API_KEY (ratings) and TMDB_LANGUAGE / TMDB_REGION (localization) are optional.

Via npx (no install):

{
  "mcpServers": {
    "tmdb": {
      "command": "npx",
      "args": ["-y", "tmdb-mcp"],
      "env": {
        "TMDB_API_TOKEN": "your-tmdb-v4-read-access-token (required)",
        "OMDB_API_KEY": "your-omdb-key (optional: IMDb/RT/Metacritic ratings)",
        "TMDB_LANGUAGE": "en-US (optional: localize, e.g. ru-RU)",
        "TMDB_REGION": "US (optional: region for certifications, e.g. RU)"
      }
    }
  }
}

Replace each value with your own. Only TMDB_API_TOKEN is required; delete the lines marked optional if you don't need them.

As a .mcpb bundle (easiest for Claude Desktop): download tmdb-mcp.mcpb from the latest release, then open it / drag it into Claude Desktop's Extensions. It's a self-contained bundle (no Node or npm needed); enter the token and the optional fields in the install dialog. Re-download and reinstall to update.

From source: git clone, then npm ci && npm run build, and point the client at it with "command": "node", "args": ["/ABS/PATH/tmdb-mcp/dist/index.js"] and the same env as above.

See docs/clients.md for per-client details and all tunables.

Related MCP server: moviefinder-mcp

What it does

Tool

Purpose

search_movies / search_tv / search_people

Find titles/people by name → TMDB id

search_multi

Search movies, TV and people at once (each row has a media_type)

get_movie / get_tv

Full details + IMDb/RT/Metacritic ratings (toggle with include_ratings)

get_movies / get_tv_shows

Compact card(s) (title/year/genres/vote average, ratings opt-in) for 1-20 ids in one call

get_person

Biography, department, links

get_movie_credits / get_tv_credits

Top-billed cast and headline crew

get_movie_recommendations / get_tv_recommendations

TMDB's editorial recommendations

get_similar

Algorithmically similar titles (media_type + id)

get_trending

What's popular now (movies / TV / people, day or week)

get_movie_genres / get_tv_genres

Genre id ↔ name reference

discover_movies

Filter by genre, year/date range, rating, cast/crew/people, companies, keywords, providers, certification, …

discover_tv

Same, plus networks/type/status, but no cast/crew/person filter (use get_person_credits for that)

get_watch_providers

Where to stream/rent/buy, by region (JustWatch via TMDB)

get_person_credits

A person's filmography (cast & crew)

get_videos

Trailers/teasers/clips (YouTube links)

get_reviews

User reviews (author, rating, text) for a movie/TV

get_collection

A movie franchise/collection and its parts, in release order

find_by_imdb_id

Resolve an IMDb id → TMDB movie/TV/person

get_tv_season / get_tv_episode

Season episode list / single-episode details

search_keywords

Resolve keyword names → ids for discover_*

search_companies

Resolve a production company name → id for discover_*'s with_companies

search_watch_providers

Resolve a streaming/rental service name (e.g. 'Netflix') → id for discover_*'s with_watch_providers

get_ratings

IMDb/RT/Metacritic ratings by IMDb id or title (standalone)

Prompts. Alongside the tools above, the server exposes two MCP prompts: recommend_similar (title, optional media_type, optional count) plans a search for titles similar to one the user liked, driving get_similar / get_movie_recommendations / get_tv_recommendations / discover_movies / discover_tv instead of relying on the model's own knowledge. top_by_entity (name, optional entity_type, genre, media_type, count) finds the best-regarded titles from a person or a production company/studio (e.g. "A24's top movies" or "Tarantino's best crime films") via discover_movies/ discover_tv, and for a person's TV work specifically falls back to get_person_credits (TMDB's own /discover/tv can't filter by person at all).

Backbone vs. enrichment. TMDB is the primary source (search, metadata, people, trending). OMDb is optional enrichment: get_movie/get_tv chain the imdb_id TMDB returns into an OMDb lookup, so ratings come back in one call, along with a free-text awards summary (major-award wins/nominations, e.g. Oscars for a film or Emmys for a show, for the title as a whole, not attributed to any one person) and OMDb's own age rating (ratings.rated, separate from this server's own certification). Without an OMDb key the TMDB data still works; the ratings field just reports that it is unconfigured.

Localization. Set TMDB_LANGUAGE (e.g. ru-RU) and TMDB_REGION (e.g. RU) to get localized titles/overviews/genre names and region-specific certifications. The search tools, get_movie/get_tv/get_person, get_collection and discover_movies/discover_tv also accept a per-call language override.

Getting your credentials

One token is required (TMDB); the OMDb key is optional. Both are free.

  1. TMDB token (required). Create a free account at themoviedb.org, then open Settings → API and request an API key (personal use). Copy the "API Read Access Token" (the long v4 token, not the short v3 key) into TMDB_API_TOKEN. It's sent as Authorization: Bearer ….

  2. OMDb key (optional). Grab a free key at omdbapi.com/apikey.aspx (the free tier is fine), click the activation link in the email, and set OMDB_API_KEY. This unlocks get_ratings and the IMDb / Rotten Tomatoes / Metacritic scores in movie and TV details. Without it, everything else still works.

Put these in your MCP client config's env block (see docs/clients.md for per-client snippets). Never commit them. TMDB_LANGUAGE / TMDB_REGION optionally set default locale/region (e.g. ru-RU, RU).

Advanced tuning (env-only, no install-UI equivalent)

Sensible defaults; only set these if you know you need to. Env var only, not exposed in Claude Desktop's install form, so CLI/Docker users set them directly.

Variable

Default

Purpose

TMDB_BASE_URL

https://api.themoviedb.org/3

Override TMDB's API base (e.g. a proxy)

OMDB_BASE_URL

https://www.omdbapi.com

Override OMDb's API base

HTTP_TIMEOUT_MS

15000

Per-request timeout before aborting

HTTP_RETRIES

2

Retries on a transient upstream failure

TMDB_MIN_INTERVAL_MS

60

Minimum spacing between TMDB requests

OMDB_MIN_INTERVAL_MS

0

Minimum spacing between OMDb requests

CACHE_TTL_MS

300000

How long cached responses stay fresh

LOG_LEVEL

info

debug | info | warn | error | silent

If TMDB/OMDb is briefly down and a tool falls back to a cached-but-expired response rather than failing, the result carries _meta: {"tmdb-mcp/stale": true} alongside the normal data, so a client can tell a degraded answer from a fresh one.

Develop

npm install
npm run build        # type-check + bundle to dist/index.js
npm test             # node:test (mocked, offline)
npm run lint
npm run format
npm run check:api    # live upstream health-check (needs the env credentials)
npm run inspector    # run under the MCP Inspector

Runtime requires Node ≥ 20.11. Contributor/agent guidance lives in AGENTS.md.

Updating

  • .mcpb bundle: download the new bundle from the releases page and reinstall.

  • From source: git pull && npm ci && npm run build.

  • npx: unpinned npx -y tmdb-mcp fetches the latest on the next run.

This product uses the TMDB API but is not endorsed or certified by TMDB.

Privacy Policy

tmdb-mcp runs entirely on your own machine and collects no data of its own. See PRIVACY.md for exactly what it sends to TMDB/OMDb and what (if anything) it stores locally.

Security

Read-only, two fixed upstream hosts, credentials never persisted. See SECURITY.md for the full breakdown and how to report a vulnerability.

License

MIT © Grinv

Available Tools

31 tools
discover_moviesDiscover movies (filters)A
Read-only

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.7/5.0
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.

discover_tvDiscover TV shows (filters)A
Read-only

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.

ParametersJSON 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

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.9/5.0
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.

find_by_imdb_idFind by IMDb idA
Read-only

Resolve an IMDb id (e.g. 'tt0133093') to TMDB entities — returns matching movie, TV and person results. Use when you only have an IMDb id and need the TMDB id for the other tools. Only matches whole movies/shows/people: IMDb also assigns 'tt' ids to individual episodes (verified live, e.g. Breaking Bad's pilot 'tt0959621'), which this tool does not resolve — such an id comes back with every result list empty, indistinguishable from a genuinely unknown id.

ParametersJSON Schema
NameRequiredDescriptionDefault
imdb_idYesIMDb title (tt…) or name (nm…) id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
tv_resultsYes
movie_resultsYes
person_resultsYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds vital behavioral context: empty results are ambiguous (unknown id vs. episode id), which is not evident from annotations or schema.

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?

Concise, front-loaded description of 3-4 sentences. No unnecessary words; every sentence adds value (purpose, usage, limitation).

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 simple tool with one parameter, good annotations, and an output schema, the description covers the key behavioral nuance (episode handling) completely.

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?

Only one parameter with 100% schema coverage. The description reinforces the parameter's purpose and provides an example, adding minor value beyond the schema's pattern and description.

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 resolves an IMDb id to TMDB entities (movie, TV, person), with an example input. It distinguishes itself from siblings by specifying its unique role when only an IMDb id is available.

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 states when to use (when only IMDb id and need TMDB id) and provides a critical limitation: does not resolve episode IDs, with a real example. This helps the agent avoid misuse.

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

get_collectionGet a movie collectionA
Read-only

Get a movie collection/franchise and all its parts in release order (e.g. the whole 'The Dark Knight Collection'). Get the collection id from a movie's collection field in get_movie.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idNo
nameNo
partsYes
overviewYes
poster_urlYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds behavioral context by stating it returns all parts in release order, which is not covered 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?

Two sentences, no filler. The purpose and usage hint are front-loaded and every sentence adds value.

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?

With an output schema present and only two parameters, the description covers all needed context: what it returns, how to get the ID, and the ordering. No gaps.

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%, but the description adds meaning beyond the schema by explaining that the 'id' parameter is the collection ID obtainable from get_movie's 'collection' field, aiding correct usage.

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 gets a movie collection/franchise and all its parts in release order, with an example (The Dark Knight Collection). It distinguishes from siblings by specifying that the collection ID comes from get_movie's 'collection' field.

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?

Provides clear guidance: get the collection id from get_movie's 'collection' field. However, it does not explicitly state when not to use this tool or name alternatives, leaving some ambiguity.

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

get_movieGet movie detailsA
Read-only

Get full details for one movie by TMDB id: overview, genres, runtime, budget/revenue, vote average, the age/content rating (certification) for region — falling back to the US rating, then any available country, when region has none; check certification_region to see which one was used — and links (TMDB + IMDb). By default also includes IMDb/Rotten Tomatoes/Metacritic ratings and an awards summary (see include_ratings), plus OMDb's own age rating (ratings.rated — separate from this tool's own certification above; the two can differ) from OMDb (set include_ratings=false to skip); if unavailable (no OMDB_API_KEY, no imdb_id, or the OMDb lookup fails), ratings degrades to {found:false, reason} instead of failing the call. If you only need the headline info (title/year/genres/vote average) — for one id or several — use get_movies instead; it's trimmed on purpose and skips the rest of this payload. Get the id from search_movies.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
regionNoISO-3166-1 country code for region-specific results (default 'US').
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.
include_ratingsNoIf true (default), enrich the result with IMDb/Rotten Tomatoes/Metacritic ratings plus an awards summary (major-award wins/nominations — Oscars, Emmys, Golden Globes, etc., whatever OMDb aggregates; free text, not a structured count, and describes the whole film/show, not any one person's award) from OMDb (requires OMDB_API_KEY). Set false to skip the extra lookup when ratings are not needed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
yearYes
titleNo
genresYes
statusYes
imdb_idYes
ratingsNo
taglineYes
homepageYes
imdb_urlYes
overviewYes
tmdb_urlYes
budget_usdYes
collectionYes
media_typeYes
popularityYes
poster_urlYes
vote_countYes
revenue_usdYes
release_dateYes
vote_averageYes
certificationYes
certificationsYes
origin_countryYes
original_titleNo
runtime_minutesYes
spoken_languagesYes
original_languageYes
certification_regionYes
production_companiesYes

TDQS

A4.9/5.0
Behavior5/5

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

Beyond the readOnlyHint and openWorldHint annotations, the description discloses several important behaviors: certification fallback logic (region → US → any country), the degradation of 'ratings' to {found:false, reason} when OMDb is unavailable rather than failing, and the distinct nature of OMDb's ratings.rated vs the tool's own certification. This is rich, honest disclosure that anticipates real-world edge cases.

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 densely packed with necessary information, and it is well-structured: main purpose, then certification details, then ratings/fallback, then guidance to alternatives. Every sentence earns its place; however, it could be slightly tightened without losing critical context. Still, the complexity of the tool justifies the length, so it's not padded.

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's complexity (multiple fields, fallback behaviors, optional enrichment), the description is exceptionally complete. It covers prerequisites (OMDB_API_KEY), failure modes (degraded ratings), and the source of the ID, leaving no obvious gaps for the agent. The presence of an output schema reduces the need to explain return format, but the description already covers key behavior.

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?

Although schema coverage is 100%, the description adds significant semantic depth: it explains how region affects certification fallback, what language does (localizes titles and genre names), and the full implications of include_ratings (including the requirement for OMDB_API_KEY and the benefit of skipping). These details go beyond the schema's bare descriptions and help the agent make informed decisions.

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 explicitly states it retrieves full details for one movie by TMDB ID, listing many fields (overview, genres, runtime, etc.). It clearly differentiates from sibling get_movies (plural) by noting the trimmed-down headline-only nature, and from get_tv by focusing on movies. The verb 'Get' and resource 'movie details' are specific and unambiguous.

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 explicit when-to-use guidance: 'If you only need the headline info... use get_movies instead' and 'Get the id from search_movies.' This not only helps select the tool but also directs to the correct source for the required ID. It also explains the optional include_ratings flag and when to set it to false, providing clear alternative paths within the tool.

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

get_movie_creditsGet movie cast & crewA
Read-only

List the top-billed cast (up to 20) and the headline crew (director, writers, composer, DoP, …) of a movie by TMDB id. Get the id from search_movies.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
castYes
crewYes

TDQS

A4.5/5.0
Behavior4/5

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

Beyond readOnlyHint and openWorldHint annotations, description specifies the limited scope (up to 20 cast, headline crew) and example crew roles.

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?

Two efficient sentences with no wasted words, front-loading the purpose and necessary details.

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 single-parameter tool with high schema coverage and existing output schema, description fully covers purpose, input, and data source.

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%, but description adds extra context by mentioning where to obtain the TMDB id (search_movies), adding value beyond schema.

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 it lists top-billed cast (up to 20) and headline crew by TMDB id, distinguishing it from sibling tools like get_movie or search_movies.

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?

Explicitly instructs to get the id from search_movies, providing clear context for when to use this tool.

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

get_movie_genresList movie genresA
Read-only

List TMDB movie genres with their numeric ids and names (reference data; rarely changes). Feed the ids into discover_movies' with_genres/without_genres.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
genresYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds that the data is reference and rarely changes, providing useful behavioral context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no wasted words, front-loaded with the core purpose and then a usage hint. Concise and well-structured.

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 description fully explains what the tool does and how its output is used. With an output schema present and no parameters, the description is complete for the tool's purpose.

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?

The tool has no parameters, so the description's job is minimal. The schema coverage is 100%, and the description adds no parameter info because none exist. Baseline for 0 params is 4.

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 lists TMDB movie genres with numeric ids and names, using a specific verb and resource. It distinguishes from the sibling tool get_tv_genres by specifying 'movie' genres.

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?

The description tells when to use the tool (to get genre ids) and how to use the output (feed into discover_movies' with_genres/without_genres). It also notes that the data rarely changes, implying caching. No explicit when-not-to-use, but context is sufficient.

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

get_movie_recommendationsGet movie recommendationsA
Read-only

Get movies TMDB recommends for the given movie id, based on co-viewing/personalization data (what users who liked this also liked) — usually the more thematically relevant list. Prefer this over get_similar as the default choice; get_similar matches on shared genres/keywords, a blunter heuristic that can surface tonally unrelated titles. Get the id from search_movies.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds behavioral context about the recommendation basis and comparison to get_similar, without contradicting the annotations. It does not discuss rate limits or pagination details, but that is acceptable given 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each serving a distinct purpose: explaining the tool, giving usage preference, and providing input source. It is front-loaded and contains no unnecessary words.

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 presence of an output schema, the tool definition is complete. It covers purpose, usage guidelines, input source, and differentiation from siblings. No additional details are needed for effective invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/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. The description implicitly references the required parameter (movie id) but does not add new meaning beyond the schema. The page parameter is not mentioned, but the schema describes it adequately.

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 retrieves TMDB recommendations for a given movie ID, explains the basis (co-viewing/personalization data), and explicitly distinguishes it from the sibling tool get_similar. It also directs users to obtain the ID from search_movies.

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 advises to prefer this over get_similar as the default choice and explains the difference in recommendation logic. Also provides guidance on getting the movie ID from search_movies.

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

get_moviesGet compact movie card(s)A
Read-only

Get a compact card — title, year, genres, vote average, and (opt-in) ratings — for 1-20 movies by TMDB id in one call. Deliberately trimmed (no overview, cast, budget, certifications, production companies, etc.): use this for a single id too when you only need that headline info and not the full get_movie payload, not just for checking many at once. Call get_movie instead when you need the full details for a title (including region-specific certification). A bad/unknown id never fails the whole call — that entry comes back {id, found:false, reason} instead, in the same order as ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesTMDB movie ids to fetch (1-20). Get them from search_movies/discover_movies/get_similar/get_movie_recommendations/etc.
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.
include_ratingsNoIf true, enrich every card with compact IMDb/Rotten Tomatoes/Metacritic ratings from OMDb (requires OMDB_API_KEY) — one extra OMDb lookup per id, so a large batch means a burst of OMDb calls; mind OMDb's own rate limit. Unlike get_movie/get_tv, defaults to false (off) here.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYes

TDQS

A4.9/5.0
Behavior5/5

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

Discloses that bad IDs do not fail the call, returning {id, found:false, reason} in order. Mentions OMDb rate limits for include_ratings. Annotations already declare readOnlyHint and openWorldHint; description adds complementary behavioral context without contradiction.

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?

Well-structured and front-loaded with purpose, but slightly verbose in the middle listing exclusions and use cases. Each sentence earns its place, though could tighten some phrasing.

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 3 parameters, output schema present, and annotations, the description is complete. Covers error behavior, rate limits, scope of data, and contrasts with sibling tool. No gaps.

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%, but description adds meaningful context: IDs sourced from search/discover/etc., language override localization, include_ratings defaults to false and explains OMDb burst calls. Provides value beyond schema.

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 it fetches compact movie cards for 1-20 TMDB IDs, explicitly listing included fields (title, year, genres, vote average, ratings) and contrasting with get_movie for full details. It distinguishes from siblings effectively.

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?

Provides explicit when-to-use (single or multiple IDs for headline info) and when-not-to-use (call get_movie for full details including region-specific certification). Also explains handling of bad IDs.

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

get_personGet person detailsA
Read-only

Get full details for one person by TMDB id: biography, birthday/deathday, department, and links (TMDB + IMDb). Does not include filmography — use get_person_credits for that. Get the id from search_people or a credits list.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
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.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameNo
genderYes
imdb_idYes
birthdayYes
deathdayYes
homepageYes
imdb_urlYes
tmdb_urlYes
biographyYes
popularityYes
profile_urlYes
also_known_asYes
place_of_birthYes
known_for_departmentYes

TDQS

A4.6/5.0
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 disclosure is minimal. It adds context about returned fields but does not mention rate limits, authorization needs, or error behavior. The description is adequate given 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is three sentences, each providing essential information without redundancy. It front-loads the purpose and follows with critical exclusions and id source, making it efficient for an agent to parse.

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?

Given the presence of an output schema and clear annotations, the description provides sufficient context. It lists the major return fields and clarifies what is not included. It does not address edge cases or error handling, but these are not critical for typical use.

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%, and the description adds value by explaining the id's origin and the language parameter's purpose (localization). However, it does not elaborate beyond what the schema already provides for each parameter.

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 action (get full details), the resource (one person by TMDB id), and lists specific returned fields. It explicitly distinguishes from the sibling tool get_person_credits by noting what is not included (filmography).

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 (for person details) and when to use the alternative (get_person_credits for filmography). It also tells where to obtain the required id (from search_people or a credits list).

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

get_person_creditsGet person filmographyA
Read-only

List the movies and TV shows a person is known for (cast roles and crew jobs), most popular first, capped to the top 25 of each by default; talk-show/awards-show guest appearances ('Self'/'Himself'/'Herself') and repeat entries for the same title are excluded so the list stays about actual roles. A title with several crew jobs (writer AND director AND producer on one film) still only counts once against the crew cap. Cast entries include a vote_average; crew entries (director, writer, …) do not — call get_movie/get_tv on the id for a crew credit's rating. Pass department (e.g. 'Directing') to restrict crew to just that role — the reliable way to get someone's complete filmography in one department when their other departments would otherwise compete for the same cap; for a handful of exceptionally prolific people even that isn't enough (e.g. 50+ directing credits), so raise limit too when department alone still looks short. Use for 'what has this actor/director been in'. This tool has no genre filter — for 'which of X's movies are animated/horror/etc.' use discover_movies instead, combining with_cast/with_crew/with_people with with_genres (discover_tv has no equivalent — it can't filter by person at all — so for a person's TV work in one genre, call this tool and check the returned media_type 'tv' entries' genres yourself, e.g. via get_tv_shows). Get the id from search_people.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
limitNoMax cast entries and max crew entries to return (each capped separately; default 25). Raise this for an exceptionally prolific person — e.g. a director with 50+ films — where even a department filter still leaves more titles than the default cap keeps.
departmentNoRestrict crew credits to this department (e.g. 'Directing' for a director's filmography). Without it, a multi-hyphenate's OTHER departments (writing, producing, …) compete for the same 25-credit cap and can crowd out titles in the department you actually want.

Output Schema

ParametersJSON Schema
NameRequiredDescription
castYes
crewYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and openWorldHint=true. Description adds details: default cap of 25, exclusion of talk-show appearances and duplicates, deduplication of multiple crew jobs, cast entries include vote_average but crew do not, and behavior of department and limit parameters for prolific people.

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?

Long but every sentence adds valuable information. Front-loaded with main purpose. Could be slightly more concise, but efficient given the complexity.

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?

Completeness is high: covers purpose, parameters, limitations, alternatives, and output details (e.g., cast vs crew attributes). Output schema exists but description still provides behavioral context.

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% but description adds significant value beyond schema: explains why raise limit for prolific people, why use department to avoid crowding, that department only affects crew credits, and that without department, other departments compete for cap.

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?

Clearly states the tool lists movies and TV shows a person is known for, with cast and crew roles, most popular first, capped at 25 each. Differentiates from sibling tools like search_people, get_movie_credits, and discover_movies by specifying its focus on a person's combined filmography and exclusion of guest appearances.

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 tells when to use: 'for what has this actor/director been in'. Provides alternatives: use discover_movies with with_cast/with_crew/with_people for genre filtering, and for TV genres, call this tool then check media_type. Says to get id from search_people.

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

get_ratingsGet IMDb/RT/Metacritic ratingsA
Read-only

Look up IMDb, Rotten Tomatoes and Metacritic ratings, an awards summary (major-award wins/nominations — Oscars, Emmys, Golden Globes, etc.; free text, not a structured count, for the whole film/show, not one person), and OMDb's own age rating (rated), from OMDb by IMDb id (preferred, e.g. 'tt0133093') or by title (+ optional year/type). Prefer get_movie/get_tv when you have a TMDB id — they already include this. Requires OMDB_API_KEY. One of imdb_id or title is required; omitting both returns an error. A no-match lookup is not an error: it returns {found:false, reason}.

ParametersJSON Schema
NameRequiredDescriptionDefault
typeNoRestrict a title lookup to this entry type. Verified live: without it, OMDb's own title match can silently prefer one type over another when the exact same title exists as more than one — e.g. a title lookup for 'Chuck' with no `type` returns the 2007 TV series, not the unrelated 2016 movie of the same name, with no signal the movie was ever in contention. Only affects a title lookup; has no effect when imdb_id is given (already unambiguous).
yearNoYear, to disambiguate a title.
titleNoMovie/show title (used when imdb_id is absent).
imdb_idNoIMDb title id. Takes precedence over title when both are given.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

Annotations declare readOnlyHint and openWorldHint. The description adds important behavioral details: no-match returns {found:false, reason}, imdb_id takes precedence over title, and the type parameter's effect on ambiguous title lookups. No contradiction with 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 well-structured and front-loaded with the main purpose. It includes necessary details but could be slightly more concise. However, it remains clear and informative without redundancy.

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 presence of an output schema (not shown), the description adequately covers all needed context: what is returned, how to use the parameters, prerequisites, and error behavior. It addresses potential ambiguity and provides complete guidance.

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% with detailed parameter descriptions. The description adds extra value by explaining the type parameter's role in disambiguation and noting imdb_id precedence, beyond what the schema provides.

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 explicitly states the tool looks up IMDb, Rotten Tomatoes, and Metacritic ratings, an awards summary, and OMDb age rating. It clearly distinguishes from siblings like get_movie/get_tv by noting they already include this data.

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?

Provides explicit when-to-use guidance: 'Prefer get_movie/get_tv when you have a TMDB id — they already include this.' Also specifies required API key, parameter requirements (one of imdb_id or title), and error handling for missing parameters and no-match lookups.

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

get_reviewsGet user reviewsA
Read-only

Get user reviews for a movie or TV show (author, their rating if the reviewer left one — it can be null, and the review text, clipped to ~1500 characters). Get the id from search_movies/search_tv.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
media_typeYesMedia type: 'movie' or 'tv'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already indicate read-only and open-world. The description adds that review text is clipped to ~1500 characters and that rating can be null, providing useful behavioral detail.

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 concise (two sentences), front-loaded with purpose, and contains no filler.

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 simple output and clear schema, the description fully covers what the tool does, including return fields and clipping behavior.

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% and parameters are well-documented. The description adds value by explaining where to obtain the 'id' parameter, justifying a score above baseline 3.

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 'Get user reviews for a movie or TV show', specifying the verb and resource, and distinguishes from sibling tools that search or retrieve other entities.

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?

It advises using IDs from search_movies/search_tv, providing context on prerequisites, though it does not explicitly state when not to use this tool.

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

get_similarGet similar titlesA
Read-only

Get titles TMDB considers similar to a given movie or TV show, based on shared genres and keywords — a blunter heuristic than get_movie_recommendations'/get_tv_recommendations' behavioral (co-viewing) data, so results can still be thematically noisy (matching on a shared keyword despite an unrelated tone or plot). Results sharing only the source title's broadest genre (e.g. two titles that are both merely tagged 'Drama' among several genres) are filtered out per page, since a title with a common genre can otherwise return results spanning TMDB's entire catalog; a page can come back thin or empty for a niche title once that filter applies. total_pages/total_results reflect TMDB's raw, pre-filter counts, not how many titles actually pass this filter — don't use them to gauge how many genuinely similar titles exist or when to stop paging; expect per-page result counts well under 20, sometimes 0 (verified live: a real title returned total_pages:23897/total_results:477939 but only 3-6 actual results per page). Try recommendations first for thematically closer picks; use this when you specifically want genre/keyword-adjacent titles. Get the id from search_movies/search_tv.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
media_typeYesMedia type: 'movie' or 'tv'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.6/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. Description adds significant behavioral context: noise from shared keywords, filtering out broad genre matches, misleading total_pages/total_results counts, and per-page results may be thin or empty. No contradictions with 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?

Description is front-loaded with purpose, but is somewhat verbose. However, every sentence adds value (contrast with recommendations, caveats about filtering and pagination). Could be slightly more concise, but the information density justifies the 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 complexity (filtering, misleading pagination counts, possibility of empty results) and presence of output schema, the description fully covers behavioral nuances and return value interpretation. It explains not to use total_pages/total_results for gauging similarity depth, which is critical. Very complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with all parameters described. Description adds minor context (e.g., 'Get the id from search_movies/search_tv' for id, pagination context for page), but does not significantly enhance parameter meaning beyond the schema. Baseline of 3 is appropriate given high coverage.

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 retrieves titles TMDB considers similar based on shared genres and keywords, and explicitly contrasts with get_movie_recommendations/get_tv_recommendations. It uses specific verb 'Get' and specifies resource 'titles similar to a given movie or TV show', distinguishing 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?

Explicitly advises to use recommendations first for thematically closer picks, and use this for genre/keyword-adjacent similarity. Also states prerequisite: 'Get the id from search_movies/search_tv.' Provides clear when-to-use and when-not-to-use guidance.

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

get_tvGet TV show detailsA
Read-only

Get full details for one TV show by TMDB id: overview, genres, seasons/episodes counts, networks, created_by (the show's creator(s)), status, the age/content rating (certification) for region — falling back to the US rating, then any available country, when region has none; check certification_region to see which one was used — and links. By default also includes IMDb/Rotten Tomatoes/Metacritic ratings and an awards summary (see include_ratings), plus OMDb's own age rating (ratings.rated — separate from this tool's own certification above; the two can differ) from OMDb (set include_ratings=false to skip); if unavailable (no OMDB_API_KEY, no imdb_id, or the OMDb lookup fails), ratings degrades to {found:false, reason} instead of failing the call. Set expand_episodes=true to also pull every season's episode list in one extra request instead of calling get_tv_season per season. If you only need the headline info (name/year/genres/vote average, season/episode counts) — for one id or several — use get_tv_shows instead; it's trimmed on purpose and skips the rest of this payload. Get the id from search_tv.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
regionNoISO-3166-1 country code for region-specific results (default 'US').
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.
expand_episodesNoIf true, also fetch every season's full episode list (name, air date, runtime, rating) as `seasons_detail`, in one extra request — use this instead of calling get_tv_season once per season when you need all episodes of a multi-season show. Episode overviews are omitted here to keep that aggregate response usable — call get_tv_season for one season's full detail including overview. Each season's episode list is capped at 50 (season 0 'Specials' in particular can otherwise run to hundreds of bonus clips), and the combined count across every season is capped at 250 total, and the whole aggregate additionally has a hard size ceiling (trims further if episode names are unusually long) since a 30+ season show could otherwise still exceed a usable response size even with the per-season cap alone; `episode_count` on each season still reports that season's true total. The 250 budget is spent in season order starting at season 0, so on a long-running show the specials are served first and the last seasons are the ones that fall off. A season that falls entirely beyond the 250-episode budget is skipped rather than fetched-then-discarded, so its `overview`/`poster_url` come back null too, not just its `episodes` list — call get_tv_season for that season's full detail. Defaults to false.
include_ratingsNoIf true (default), enrich the result with IMDb/Rotten Tomatoes/Metacritic ratings plus an awards summary (major-award wins/nominations — Oscars, Emmys, Golden Globes, etc., whatever OMDb aggregates; free text, not a structured count, and describes the whole film/show, not any one person's award) from OMDb (requires OMDB_API_KEY). Set false to skip the extra lookup when ratings are not needed.

Output Schema

ParametersJSON Schema
NameRequiredDescription
idYes
nameNo
typeYes
genresYes
statusYes
imdb_idYes
ratingsNo
seasonsYes
taglineYes
homepageYes
imdb_urlYes
networksYes
overviewYes
tmdb_urlYes
created_byYes
media_typeYes
popularityYes
poster_urlYes
vote_countYes
vote_averageYes
certificationYes
in_productionYes
last_air_dateYes
original_nameNo
certificationsYes
first_air_dateYes
seasons_detailNo
episode_run_timeYes
number_of_seasonsYes
original_languageYes
number_of_episodesYes
last_episode_to_airYes
next_episode_to_airYes
certification_regionYes

TDQS

A5/5.0
Behavior5/5

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

Annotations (readOnlyHint, openWorldHint) are minimal, so the description carries the burden of behavioral disclosure. It goes far beyond: explains rating fallback logic (region-specific certification with fallback chain, degradation of ratings to {found:false} when OMDb unavailable), expand_episodes caps (50 per season, 250 total, trimming behavior, specials-first ordering, skipped seasons returning null), and the distinction between tool's certification and OMDb's ratings.rated. No contradictions with 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?

Though lengthy, every sentence adds essential information for a complex tool. It is front-loaded with the core purpose, then methodically covers optional behaviors and alternatives. The structure flows logically from primary details to edge cases and fallbacks, with no repetition or padding.

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's complexity (5 parameters, output schema exists, optional heavy expansions), the description is exceptionally complete. It addresses fallback scenarios, caps, degradation, alternative tools, and prerequisites. No gaps are evident for typical agent usage, and it even covers rare edge cases like trillion-épisode shows and long specials.

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, but the description substantially enriches each parameter's meaning. For expand_episodes, it details caps, trimming, ordering, and season-skip behavior. For include_ratings, it clarifies what ratings and awards summary include and the fallback behavior. For region, it explains the certification fallback chain. The extra detail is far beyond schema descriptions, making parameter semantics highly valuable.

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 it gets full details for one TV show by TMDB ID, enumerating the specific data fields (overview, genres, seasons/episodes counts, networks, created_by, status, certification, links). It explicitly distinguishes itself from get_tv_shows ('trimmed on purpose') and get_tv_season, making its specific verb+resource+scope unmistakable.

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?

Provides explicit when-to-use guidance: 'If you only need the headline info ... use get_tv_shows instead' and 'call get_tv_season for that season's full detail' for episode-level detail. Also directs users to obtain the ID via search_tv, covering prerequisites and alternatives.

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

get_tv_creditsGet TV cast & crewA
Read-only

List the main cast (up to 20) and production crew (executive producers, producers, composer, DoP, …) of a TV show by TMDB id. TMDB's show-level TV credits data does not reliably expose director/writer/creator credits — verified live across several shows (Breaking Bad, Stranger Things, Chernobyl, The Queen's Gambit): each show's actual creator/head-writer/director appears only as 'Executive Producer', never as 'Writer', 'Director' or 'Creator'. For who created the show, use get_tv's own created_by field instead; for a specific episode's actual director/writer (which TMDB does track reliably at that level), use get_tv_episode. Get the id from search_tv.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.

Output Schema

ParametersJSON Schema
NameRequiredDescription
castYes
crewYes

TDQS

A4.7/5.0
Behavior5/5

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

Adds significant behavioral context beyond annotations: states cast limited to 20, lists crew roles, and importantly verifies that director/writer/creator credits are not reliably exposed (with examples). This complements the readOnlyHint and openWorldHint.

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?

Every sentence serves a purpose: purpose, limitation with evidence, alternative tools, source of ID. No fluff, well front-loaded, and structured logically.

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 output schema exists, the description compensates by explaining the structure (cast up to 20, specific crew roles) and limitations. It provides complete guidance for using this tool alongside its siblings.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers the single parameter 'id' with description 'TMDB numeric id.' Description merely restates 'by TMDB id', adding no new semantic information. With 100% schema coverage, a baseline 3 is appropriate.

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 lists main cast (up to 20) and production crew by TMDB id. It distinguishes itself from siblings by detailing what it does not expose (director/writer/creator) and directs to alternatives.

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 provides when to use, when not, and alternatives: for creator credits use get_tv's created_by field, for episode specifics use get_tv_episode. Also mentions sourcing ID from search_tv.

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

get_tv_episodeGet TV episodeA
Read-only

Get one episode of a TV show by show id + season number + episode number: overview, air date, runtime, rating, guest stars (up to 15) and director/writer. Get the show id from search_tv.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
season_numberYesSeason number (0 = specials).
episode_numberYesEpisode number within the season.

Output Schema

ParametersJSON Schema
NameRequiredDescription
crewYes
nameYes
air_dateYes
overviewYes
still_urlYes
guest_starsYes
vote_averageYes
season_numberYes
episode_numberYes
runtime_minutesYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations (readOnlyHint, openWorldHint) already indicate non-destructive and open-ended behavior. Description adds specific output fields and constraints (up to 15 guest stars), providing valuable behavioral details beyond annotations. No contradiction.

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?

Two concise sentences, each serving a clear purpose: first explains functionality and output, second provides guidance for input. No unnecessary words, efficiently front-loaded.

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?

Given the tool's simplicity (3 parameters, output schema exists), the description adequately covers the core functionality and return fields. It omits potential edge cases like missing fields or error handling, but these are minor given the openWorldHint and standard API behavior.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so all three parameters are already well-described in the input schema. The description adds minimal value by linking the 'id' parameter to search_tv. Baseline of 3 is appropriate as description doesn't significantly enhance parameter understanding beyond what the schema provides.

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 specifies the action ('Get one episode of a TV show') and the resource (episode identified by show id, season, episode number). It lists returned fields (overview, air date, etc.) and distinguishes from siblings like get_tv_season and get_tv by focusing on a single episode.

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?

Description tells the user to obtain the show id from search_tv, providing a clear prerequisite. While it doesn't explicitly state when not to use this tool, the context implies it's for individual episode details vs. season-level data. Could be improved by mentioning alternatives like get_tv_season for full season data.

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

get_tv_genresList TV genresA
Read-only

List TMDB TV genres with their numeric ids and names (reference data; rarely changes). Feed the ids into discover_tv's with_genres/without_genres.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
genresYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds that it is reference data which rarely changes, providing useful stability context 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two concise sentences with front-loaded purpose and a usage hint. No wasted words; every sentence adds value.

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 no parameters and an output schema (referenced in context), the description explains the output content (genre ids and names) and how to use them, making it complete for a reference data retrieval tool.

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?

No parameters exist, so schema coverage is 100%. The description does not need to explain parameters, and the baseline for zero-parameter tools is 4.

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

Purpose4/5

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

Clearly states it lists TV genres with ids and names, and notes it is reference data. The sibling get_movie_genres is similar but the tool name and description provide enough specificity for differentiation.

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?

Explicitly instructs to feed ids into discover_tv's with_genres/without_genres, providing clear usage context. Does not explicitly mention when not to use, but the directive is strong enough.

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

get_tv_recommendationsGet TV recommendationsA
Read-only

Get TV shows TMDB recommends for the given show id, based on co-viewing/personalization data (what users who liked this also liked) — usually the more thematically relevant list. Prefer this over get_similar as the default choice; get_similar matches on shared genres/keywords, a blunter heuristic that can surface tonally unrelated titles. Get the id from search_tv.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.4/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint, indicating safe read operation. Description adds value by explaining the underlying algorithm (co-viewing/personalization vs. genre/keyword matching), giving agents behavioral context 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?

Two sentences delivering key information efficiently. Could be slightly more structured (e.g., separate usage guidance from description) but remains clear and front-loaded.

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?

With only 2 parameters, full schema coverage, annotations present, and an output schema, the description is complete. It covers purpose, selection criteria, and parameter source, leaving no major gaps.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents both parameters well. The description adds marginal value by linking the id to search_tv, but does not elaborate on parameter details that the schema doesn't already cover.

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 'Get TV shows TMDB recommends for the given show id' and distinguishes from get_similar by explaining the recommender logic. It is a specific verb-resource pair that 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?

Explicitly recommends preferring this tool over get_similar as the default choice and clarifies when each is appropriate. Also instructs to get the id from search_tv, providing concrete guidance.

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

get_tv_seasonGet TV seasonA
Read-only

Get one season of a TV show (by show id + season number): overview and the episode list with air dates, runtimes and ratings, capped at 50 episodes (episode_count reports the true total). Season 0 is usually specials, which can run to hundreds of bonus clips on a long-running show. Use get_tv with expand_episodes=true instead if you need every season's episodes in one call. Get the show id from search_tv.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
season_numberYesSeason number (0 = specials).

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
air_dateYes
episodesYes
overviewYes
poster_urlYes
episode_countYes
season_numberYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations declare readOnlyHint=true and openWorldHint=true; description adds key behavioral details: 50-episode cap, true total in episode_count, and that season 0 (specials) can be large. No contradictions.

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?

Two sentences, front-loaded with all essential info (input, output, cap, total). Second sentence adds valuable guidance on specials and alternatives. No wasted words.

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's simplicity (2 params, output schema provided), the description covers input, output, behavioral constraints, and context for using alternatives. Sufficiently complete for an agent to invoke correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema covers both parameters with descriptions (100% coverage). Description reinforces that season_number 0 is specials but adds no new semantic information beyond the schema. Baseline 3 is appropriate.

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?

Clearly states the tool retrieves one season of a TV show by show ID and season number, listing returned data (overview, episode list with air dates, runtimes, ratings) and noting the 50-episode cap and true total in episode_count. Distinct from siblings like get_tv and get_tv_episode.

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?

Explicitly suggests an alternative (get_tv with expand_episodes=true) for retrieving all seasons' episodes in one call and advises obtaining the show ID from search_tv. Doesn't explicitly state when not to use, but the alternative guidance is clear.

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

get_tv_showsGet compact TV show card(s)A
Read-only

Get a compact card — name, year, genres, vote average, season/episode counts, and (opt-in) ratings — for 1-20 TV shows by TMDB id in one call. A quick way to spot short/miniseries shows (low episode count) across many candidates without a per-title get_tv call. Deliberately trimmed otherwise (no overview, the actual episode list, networks, certifications, etc.): use this for a single id too when you only need that headline info and not the full get_tv payload, not just for checking many at once. Call get_tv instead when you need the full details for a title (including region-specific certification). A bad/unknown id never fails the whole call — that entry comes back {id, found:false, reason} instead, in the same order as ids.

ParametersJSON Schema
NameRequiredDescriptionDefault
idsYesTMDB TV show ids to fetch (1-20). Get them from search_tv/discover_tv/get_similar/get_tv_recommendations/etc.
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.
include_ratingsNoIf true, enrich every card with compact IMDb/Rotten Tomatoes/Metacritic ratings from OMDb (requires OMDB_API_KEY) — one extra OMDb lookup per id, so a large batch means a burst of OMDb calls; mind OMDb's own rate limit. Unlike get_movie/get_tv, defaults to false (off) here.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already provide readOnlyHint and openWorldHint. The description adds significant behavioral context: bad/unknown ids never fail the whole call and instead return {id, found:false, reason} in order; include_ratings defaults to false and has rate limit implications; language overrides localization. No contradictions with 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 well-structured with a clear opening sentence, then specific details and usage guidance. It is moderately long but every sentence adds value. Slightly verbose in the middle but overall efficient.

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 presence of an output schema (not shown but mentioned), the description covers all necessary aspects: purpose, parameters, behavior on errors, use cases, and comparisons to sibling tools. It is complete for a read-only bulk lookup tool.

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% with each parameter having a description. The description adds further value: ids can be obtained from search_tv/discover_tv/etc.; language localization explanation; include_ratings defaults to false and notes OMDb rate limit. This goes beyond the schema.

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 gets compact TV show cards for 1-20 shows by TMDB id. It specifies the exact data included (name, year, genres, vote average, season/episode counts, opt-in ratings) and explicitly distinguishes from get_tv by noting the trimmed payload and use case for quick scanning.

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: for quick headline info, spotting short/miniseries, and checking many candidates without per-title get_tv calls. It clearly states when to use get_tv instead (when full details including region-specific certification are needed). It also explains how to obtain ids (from search_tv/discover_tv/get_similar/get_tv_recommendations).

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

get_videosGet trailers & videosA
Read-only

List trailers, teasers and clips for a movie or TV show; YouTube entries include a watch URL. Get the id from search_movies/search_tv. Results are filtered to the server's configured TMDB_LANGUAGE (default 'en-US') — this tool has no per-call language override, so a title with plenty of videos in other languages can come back with few or none if the server is configured for a different language (verified live: 29 results for a title under 'en-US' vs. 2 under 'de-DE').

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
media_typeYesMedia type: 'movie' or 'tv'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultsYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations already provide readOnlyHint=true and openWorldHint=true. The description adds significant behavioral context: it lists the types of videos included, mentions that YouTube entries include a watch URL, and crucially discloses the language restriction with a live example (29 vs 2 results). This goes beyond the annotations and fully informs the agent about the tool's behavior.

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 consists of two concise sentences. The first sentence states the main purpose and key feature (YouTube watch URL). The second provides usage guidance and a critical behavioral note. Every part earns its place, and it is front-loaded with the most important 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 the complexity of the tool (two parameters with clear schema, an output schema exists for return values), the description covers all necessary aspects: what videos are returned, where to get the id, and the language limitation. It is fully informative for an agent to use the tool correctly.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The input schema has 100% coverage, so the baseline is 3. The description adds minimal extra meaning to the parameters: it mentions that the id comes from search tools, but the schema already describes id and media_type sufficiently. The language caveat is not a parameter. Thus, the description adds some context but doesn't significantly enhance parameter understanding beyond the schema.

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 verb "List" and the resource "trailers, teasers and clips for a movie or TV show" and distinguishes the tool from siblings by noting that YouTube entries include a watch URL. It also directs where to get the required id from search_movies/search_tv, making the purpose specific and distinct from other listing tools.

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?

The description gives explicit context on when to use: after obtaining an id from search_movies/search_tv. It also warns about the language limitation (no per-call override) with a concrete example. While it doesn't explicitly list exclusions or alternatives, the provided context is sufficient for an agent to understand the appropriate usage.

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

get_watch_providersWhere to watchA
Read-only

Find where a movie or TV show can be streamed, rented or bought in a given country (JustWatch data via TMDB). Returns provider names per access type for that country; if it has no data, returns available:false plus available_regions to retry with. Get the id from search_movies/search_tv.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYesTMDB numeric id.
regionNoISO-3166-1 country code for region-specific results (default 'US').
media_typeYesMedia type: 'movie' or 'tv'.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.3/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. The description adds valuable behavioral context: the return structure (provider names per access type, fallback with available_regions). It does not contradict 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 two substantive sentences plus a short instruction. It is front-loaded with the main purpose. Minor redundancy (e.g., 'JustWatch data via TMDB' could be tighter) but overall concise and well-structured.

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?

Given the output schema exists, the description need not detail return values, but it does describe the key return structure (provider names, fallback). It covers the essential edge case of no data and region handling, making it complete for this tool's complexity.

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% for all three parameters. The description adds value by instructing the agent to 'Get the id from search_movies/search_tv', which clarifies the parameter source beyond the schema's description. This subtle guidance enhances semantics.

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 verb 'find' and the resource 'watch providers for a movie or TV show', distinguishes from siblings like search_movies and get_tv by specifying the exact functionality (streaming, renting, buying via JustWatch) and hints at the necessary ID source.

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?

The description provides clear context on when to use this tool (to find streaming options) and gives a fallback behavior ('if it has no data, returns available:false plus available_regions to retry with'). It also specifies the prerequisite source for the 'id' parameter. However, it does not explicitly contrast with sibling tools like search_watch_providers.

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

search_companiesSearch production companiesA
Read-only

Resolve a production company's name to its TMDB numeric id (e.g. 'A24', 'Pixar'). Feed the id into discover_movies/discover_tv via with_companies. Company names aren't unique — TMDB can have several unrelated companies sharing the same name (e.g. two different 'A24's, one US and one GB) — check origin_country and logo_url to tell rows apart when a name matches more than one.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
queryYesCompany name to look up.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations already indicate readOnlyHint and openWorldHint. Description adds important behavioral context: the tool may return multiple rows for the same name, and suggests disambiguating fields. Does not contradict 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?

Three well-focused sentences. First states purpose with examples, second tells downstream usage, third warns about duplicates and gives disambiguation advice. No unnecessary words. Efficient and clear.

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's moderate complexity (simple search with pagination), the description covers purpose, usage, disambiguation, and downstream integration. Schema and annotations already provide rich structured data. The description is complete for agent decision-making.

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 covers 100% of parameters with descriptions. Description adds value by explaining how to use the output (feed id to other tools) and disambiguation hints, though it doesn't add extra parameter details beyond schema. Baseline 3, elevated for contextual addition.

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?

Clearly states the purpose: resolve company name to TMDB numeric id. Provides concrete examples (A24, Pixar) and explains downstream usage (feed to discover_movies/discover_tv via with_companies). Distinguishes from sibling tools by focusing on companies.

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 tells when to use: to get a company id for use with discover endpoints. Warns about non-unique company names and advises checking origin_country and logo_url for disambiguation. Provides explicit guidance on handling multiple results.

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

search_keywordsSearch keywordsA
Read-only

Resolve keyword names to TMDB keyword ids (e.g. 'time travel', 'based on true story'). Feed the ids into discover_movies/discover_tv via with_keywords / without_keywords.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
queryYesKeyword text to look up.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already provide readOnlyHint and openWorldHint. The description adds the purpose (resolving) and downstream usage, disclosing that it returns ids for discovery. No contradictions.

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?

Two sentences, each earning its place: purpose with examples, then usage instruction. No fluff.

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?

Covers purpose, usage, and examples. Does not mention pagination or output format, but schema and output schema handle those. Sufficient for a simple lookup tool.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. Description provides example inputs ('time travel') adding marginal value beyond schema 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 clearly states the tool resolves keyword names to TMDB keyword ids, with examples. It distinguishes from sibling tools (e.g., search_movies) by focusing on keywords.

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?

Explicitly tells when to use the output (feed into discover_movies/discover_tv with with/without_keywords). Does not explicitly state when not to use, but context makes it clear.

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

search_moviesSearch moviesA
Read-only

Search TMDB movies by title; returns compact summaries with the TMDB id that the other movie tools (get_movie, get_movie_credits, …) require, plus pagination info. Use this over search_multi when you already know the result is a movie. region here only picks which country's release_date is shown per result (e.g. a title's US vs. India theatrical date) — verified live, it does not filter which movies match or reorder them; for actual region-based availability use get_watch_providers instead.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
yearNoBias results toward this release year — TMDB's search 'year' filter is soft: some results outside this year can still appear (unlike discover_movies' year filter, a hard primary_release_year match). For an exact-year filter, use discover_movies instead.
queryYesMovie title to search for.
regionNoISO-3166-1 country code for region-specific results (default 'US').
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.
include_adultNoInclude adult (NSFW) results. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A5/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true. The description adds valuable behavioral context, such as the region parameter not filtering results (only selecting which release_date to display) and the year parameter being a soft bias. This complements the annotations without contradiction.

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 concise (two sentences plus a clarifying note) and front-loaded with the main purpose. Every sentence provides essential information without redundancy.

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 6 parameters, full schema coverage, annotations, and presence of output schema, the description is thorough. It covers scope, alternative tools, parameter nuances, and addresses common confusions, making it complete for agent selection.

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, such as explaining region's non-filtering behavior, year's soft bias, and recommending alternatives. This enhances parameter understanding.

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 it searches TMDB movies by title and returns compact summaries with TMDB id and pagination info. It also distinguishes itself from the sibling tool 'search_multi' by specifying when to use each.

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 explicitly recommends using this tool over 'search_multi' when the result is known to be a movie, and advises using 'discover_movies' for exact-year filtering. It also clarifies region and year parameter behaviors, providing clear guidance on when to use alternatives.

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

search_multiSearch everythingA
Read-only

Search movies, TV shows and people in one call. Each result carries a media_type ('movie' | 'tv' | 'person') so you can route to the right get_* tool. Use when the user's query could be any of these; if you already know the type, search_movies/search_tv/search_people are more precise.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
queryYesFree-text query.
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.
include_adultNoInclude adult (NSFW) results. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint and openWorldHint. Description adds value by explaining each result carries a media_type for routing, which is not in annotations. No contradictions.

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?

Two sentences, front-loaded with purpose, then usage guidance. No wasted words.

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 simple multi-type search tool with annotations and output schema, description covers purpose, usage, and result structure adequately.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% with detailed parameter descriptions. Description does not add extra parameter information beyond the schema.

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 searches movies, TV shows, and people in one call. It distinguishes from siblings by noting more precise alternatives when the type is known.

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 to use when the query could be any type, and not to use when type is known, directing to specialized search tools.

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

search_peopleSearch peopleA
Read-only

Search TMDB people (actors, directors, crew) by name; returns the TMDB id needed by get_person plus their top 5 best-known titles (known_for). Use this over search_multi when you already know the result is a person.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
queryYesPerson name to search for.
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.
include_adultNoInclude adult (NSFW) results. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only and open-world behavior. Description adds that the tool returns the TMDB ID and top 5 known-for titles, which are useful behavioral details 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.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

Two sentences, no fluff, front-loaded with key information. Every word earns its place.

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's simplicity, full schema documentation, presence of output schema, and clear relationship to sibling tools, the description is complete and sufficient.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so baseline is 3. The description does not add new meaning per parameter beyond what the schema already provides.

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 uses a specific verb ('Search'), identifies the resource ('people'), and adds scope ('by name'). It distinguishes from sibling 'search_multi' by stating when to use this tool over the alternative.

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 states 'Use this over search_multi when you already know the result is a person,' providing clear guidance on tool selection.

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

search_tvSearch TV showsA
Read-only

Search TMDB TV shows by name; returns compact summaries with the TMDB id that get_tv and the other TV tools require. Use this over search_multi when you already know the result is a TV show.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
yearNoFilter by first-air-date year. Unlike search_movies' soft year filter, this is a hard first-air-year match (verified live). For a first-air-date range, use discover_tv.
queryYesTV show name to search for.
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.
include_adultNoInclude adult (NSFW) results. Defaults to false.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true; the description adds that results are compact summaries and that the TMDB id is the required input for downstream TV tools. It does not contradict annotations and gives useful behavioral context beyond schema fields.

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?

Two dense sentences, front-loaded with the core action and followed by usage guidance. No filler or redundancy.

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?

With a full input schema, output schema, read-only/open-world annotations, and a clear sibling distinction, the description covers the essential context for a search tool. It does not need to repeat return-value details because an output schema exists.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and each parameter (query, page, year, language, include_adult) already has detailed meaning. The description's phrase 'by name' adds slight emphasis on query behavior, but no additional parameter semantics are needed, so baseline 3 is appropriate.

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 states 'Search TMDB TV shows by name' — a specific verb and resource. It also explains returns compact summaries with TMDB id and explicitly distinguishes from search_multi, earning full marks.

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 instructs 'Use this over search_multi when you already know the result is a TV show,' which both names an alternative and sets the condition for choosing this tool. It also notes get_tv and other TV tools require the returned id, clarifying downstream usage.

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

search_watch_providersSearch streaming/rental providersA
Read-only

Resolve a streaming/rental/purchase service's name (e.g. 'Netflix', 'Disney Plus') to its TMDB numeric provider id. Feed the id into discover_movies/discover_tv's with_watch_providers (with watch_region set to the same region given here, if any) to find top titles on that service — TMDB has no name-based lookup of its own for this, only numeric ids, and there are hundreds of providers (269+ for the US alone, more elsewhere), so don't guess an id. A provider's id and even whether it's offered at all can differ by region (e.g. a service bundled as a channel add-on in one country vs. standalone in another) — pass watch_region to match what discover_movies/discover_tv will actually see; omitting it searches the full global provider list instead, which may include ids not valid for the region the caller actually cares about.

ParametersJSON Schema
NameRequiredDescriptionDefault
pageNo1-based page number for pagination (TMDB returns up to 20 results per page, max 500).
queryYesService name (or part of it) to look up, e.g. 'Netflix'.
media_typeYesWhether to search movie or TV providers — a service can be offered for one media type but not the other (its id stays the same either way; a movie-only or TV-only service just returns nothing from the wrong media_type).
watch_regionNoTwo-letter ISO-3166-1 country code, e.g. 'US'.

Output Schema

ParametersJSON Schema
NameRequiredDescription
pageYes
resultsYes
total_pagesYes
total_resultsYes

TDQS

A4.3/5.0
Behavior4/5

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

Annotations declare readOnlyHint=true and openWorldHint=true. The description adds behavioral context beyond annotations: explains that TMDB has no name-based lookup, only numeric IDs; that provider IDs differ by region; and that omitting watch_region searches the global list. No contradiction with 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 a single paragraph that is front-loaded with the primary purpose. It is slightly long but every sentence adds necessary guidance (usage, region nuance, pagination). No redundancy.

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?

Given the complexity (name-to-ID mapping, region variation, pagination), the description is thorough. It addresses key aspects: why numeric IDs are needed, region dependency, and the impact of watch_region. The output schema exists but is not needed for completeness here.

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%, baseline 3. The description adds meaning: explains watch_region's role in matching discover queries, media_type's effect on provider existence, and that the same ID applies to both movie and TV. This adds value beyond the schema definitions.

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: 'Resolve a streaming/rental/purchase service's name to its TMDB numeric provider id.' It uses a specific verb ('resolve') and identifies the resource (service name to ID). It also distinguishes from sibling tools like search_movies by explaining the conversion is for use with discover tools.

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?

The description gives clear guidance: 'Feed the id into discover_movies/discover_tv's with_watch_providers...' and warns against guessing IDs. It explains region differences and the effect of omitting watch_region. It does not explicitly state when not to use, but provides sufficient context for correct invocation.

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

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections. Dates show when Glama detected each change.

  1. 4 tool updatesv0.11.0
    • Changeddiscover_movies9 fields changed
      • addedInput schema / properties / with_cast / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / with_companies / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / with_crew / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / with_genres / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / with_keywords / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / with_people / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / with_watch_providers / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / without_genres / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / without_keywords / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
    • Changeddiscover_tv7 fields changed
      • addedInput schema / properties / with_companies / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / with_genres / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / with_keywords / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / with_networks / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / with_watch_providers / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / without_genres / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
      • addedInput schema / properties / without_keywords / pattern
        Added value: +"^\\d+(?:,\\d+)*$"
    • Changedget_tv1 field changed
      • changedInput schema / properties / expand_episodes / description
        Previous value: -"If true, also fetch every season's full episode list (name, air date, runtime, rating) as `seasons_detail`, in one extra request — use this instead of calling get_tv_season once per season when you need all episodes of a multi-season show. Episode overviews are omitted here to keep that aggregate response usable — call get_tv_season for one season's full detail including overview. Each season's episode list is capped at 50 (season 0 'Specials' in particular can otherwise run to hundreds of bonus clips), and the combined count across every season is capped at 250 total, and the whole aggregate additionally has a hard size ceiling (trims further if episode names are unusually long) since a 30+ season show could otherwise still exceed a usable response size even with the per-season cap alone; `episode_count` on each season still reports that season's true total. A season that falls entirely beyond the 250-episode budget is skipped rather than fetched-then-discarded, so its `overview`/`poster_url` come back null too, not just its `episodes` list — call get_tv_season for that season's full detail. Defaults to false."New value: +"If true, also fetch every season's full episode list (name, air date, runtime, rating) as `seasons_detail`, in one extra request — use this instead of calling get_tv_season once per season when you need all episodes of a multi-season show. Episode overviews are omitted here to keep that aggregate response usable — call get_tv_season for one season's full detail including overview. Each season's episode list is capped at 50 (season 0 'Specials' in particular can otherwise run to hundreds of bonus clips), and the combined count across every season is capped at 250 total, and the whole aggregate additionally has a hard size ceiling (trims further if episode names are unusually long) since a 30+ season show could otherwise still exceed a usable response size even with the per-season cap alone; `episode_count` on each season still reports that season's true total. The 250 budget is spent in season order starting at season 0, so on a long-running show the specials are served first and the last seasons are the ones that fall off. A season that falls entirely beyond the 250-episode budget is skipped rather than fetched-then-discarded, so its `overview`/`poster_url` come back null too, not just its `episodes` list — call get_tv_season for that season's full detail. Defaults to false."
    • Changedsearch_tv1 field changed
      • changedInput schema / properties / year / description
        Previous value: -"Filter by first-air-date year."New value: +"Filter by first-air-date year. Unlike search_movies' soft year filter, this is a hard first-air-year match (verified live). For a first-air-date range, use discover_tv."
  2. 23 tool updatesv0.10.1
    • Addeddiscover_movies
    • Changeddiscover_tv16 fields changed
      • changedInput schema / properties / certification / description
        Previous value: -"Filter 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. Case-sensitive for movies ('pg-13' matches nothing; use 'PG-13'). 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."New value: +"Filter 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."
      • addedInput schema / properties / include_adult
        Added value: +{
        +  "description": "Include adult (NSFW) results. Defaults to false.",
        +  "type": "boolean"
        +}
      • changedInput schema / properties / min_runtime / description
        Previous value: -"Minimum runtime in minutes."New value: +"Minimum runtime in minutes. Must be <= max_runtime if both are given."
      • addedInput schema / properties / release_date_gte / format
        Added value: +"date"
      • changedInput schema / properties / release_date_gte / pattern
        Previous value: -"^\\d{4}-\\d{2}-\\d{2}$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
      • addedInput schema / properties / release_date_lte / format
        Added value: +"date"
      • changedInput schema / properties / release_date_lte / pattern
        Previous value: -"^\\d{4}-\\d{2}-\\d{2}$"New value: +"^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$"
      • changedInput schema / properties / sort_by / description
        Previous value: -"TMDB sort, e.g. 'popularity.desc', 'vote_average.desc', 'primary_release_date.desc'."New value: +"Sort 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)."
      • addedInput schema / properties / sort_by / enum
        Added value: +[
        +  "popularity.asc",
        +  "popularity.desc",
        +  "vote_average.asc",
        +  "vote_average.desc",
        +  "vote_count.asc",
        +  "vote_count.desc",
        +  "name.asc",
        +  "name.desc",
        +  "first_air_date.asc",
        +  "first_air_date.desc"
        +]
      • changedInput schema / properties / watch_region / description
        Previous value: -"Country for with_watch_providers, e.g. 'US'."New value: +"Two-letter ISO-3166-1 country code, e.g. 'US'."
      • changedInput schema / properties / with_networks / description
        Previous value: -"Comma-separated TMDB TV network, e.g. HBO or Netflix ids."New value: +"Comma-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."
      • changedInput schema / properties / with_watch_providers / description
        Previous value: -"Comma-separated TMDB watch-provider ids (e.g. Netflix's numeric id); requires watch_region to also be set."New value: +"Comma-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."
      • changedInput schema / properties / without_genres / description
        Previous value: -"Comma-separated TMDB genre ids to exclude."New value: +"Comma-separated TMDB genre ids to exclude; get ids from get_movie_genres/get_tv_genres."
      • changedInput schema / properties / without_keywords / description
        Previous value: -"Comma-separated TMDB keyword to exclude ids."New value: +"Comma-separated TMDB keyword ids to exclude (use search_keywords to resolve names → ids)."
      • changedOutput schema / properties / results / items / properties / first_air_date / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / results / items / properties / first_air_date / default
        Added value: +null
    • Changedfind_by_imdb_id4 fields changed
      • changedOutput schema / properties / movie_results / items / properties / release_date / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / movie_results / items / properties / release_date / default
        Added value: +null
      • changedOutput schema / properties / tv_results / items / properties / first_air_date / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / tv_results / items / properties / first_air_date / default
        Added value: +null
    • Addedget_collection
    • Changedget_movie2 fields changed
      • changedOutput schema / properties / release_date / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / release_date / default
        Added value: +null
    • Changedget_movie_recommendations2 fields changed
      • changedOutput schema / properties / results / items / properties / release_date / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / results / items / properties / release_date / default
        Added value: +null
    • Addedget_movies
    • Changedget_person4 fields changed
      • changedOutput schema / properties / birthday / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / birthday / default
        Added value: +null
      • changedOutput schema / properties / deathday / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / deathday / default
        Added value: +null
    • Changedget_ratings1 field changed
      • addedInput schema / properties / type
        Added value: +{
        +  "description": "Restrict a title lookup to this entry type. Verified live: without it, OMDb's own title match can silently prefer one type over another when the exact same title exists as more than one — e.g. a title lookup for 'Chuck' with no `type` returns the 2007 TV series, not the unrelated 2016 movie of the same name, with no signal the movie was ever in contention. Only affects a title lookup; has no effect when imdb_id is given (already unambiguous).",
        +  "enum": [
        +    "movie",
        +    "series",
        +    "episode"
        +  ],
        +  "type": "string"
        +}
    • Changedget_reviews2 fields changed
      • changedOutput schema / properties / results / items / properties / created_at / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date-time",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / results / items / properties / created_at / default
        Added value: +null
    • Addedget_similar
    • Addedget_trending
    • Addedget_tv
    • Changedget_tv_episode2 fields changed
      • changedOutput schema / properties / air_date / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / air_date / default
        Added value: +null
    • Addedget_tv_recommendations
    • Changedget_tv_season4 fields changed
      • changedOutput schema / properties / air_date / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / air_date / default
        Added value: +null
      • changedOutput schema / properties / episodes / items / properties / air_date / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / episodes / items / properties / air_date / default
        Added value: +null
    • Changedget_tv_shows1 field changed
      • removedInput schema / properties / region
        Removed value: -{
        -  "description": "ISO-3166-1 country code for region-specific results (default 'US').",
        -  "pattern": "^[A-Z]{2}$",
        -  "type": "string"
        -}
    • Changedget_videos3 fields changed
      • changedInput schema / properties / media_type / description
        Previous value: -"Whether the id refers to a movie or a TV show."New value: +"Media type: 'movie' or 'tv'."
      • changedOutput schema / properties / results / items / properties / published_at / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date-time",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))T(?:(?:[01]\\d|2[0-3]):[0-5]\\d(?::[0-5]\\d(?:\\.\\d+)?)?(?:Z))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / results / items / properties / published_at / default
        Added value: +null
    • Changedget_watch_providers1 field changed
      • changedInput schema / properties / media_type / description
        Previous value: -"Whether the id refers to a movie or a TV show."New value: +"Media type: 'movie' or 'tv'."
    • Changedsearch_movies3 fields changed
      • changedInput schema / properties / year / description
        Previous value: -"Filter by release year."New value: +"Bias results toward this release year — TMDB's search 'year' filter is soft: some results outside this year can still appear (unlike discover_movies' year filter, a hard primary_release_year match). For an exact-year filter, use discover_movies instead."
      • changedOutput schema / properties / results / items / properties / release_date / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / results / items / properties / release_date / default
        Added value: +null
    • Changedsearch_multi1 field changed
      • changedOutput schema / properties / results / items / oneOf
        Previous value: -[
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "id": {
        -        "type": "number"
        -      },
        -      "media_type": {
        -        "const": "movie",
        -        "type": "string"
        -      },
        -      "original_title": {
        -        "type": "string"
        -      },
        -      "overview": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "poster_url": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "release_date": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "title": {
        -        "type": "string"
        -      },
        -      "vote_average": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "vote_count": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "year": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "media_type",
        -      "year",
        -      "release_date",
        -      "vote_average",
        -      "vote_count",
        -      "overview",
        -      "poster_url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "first_air_date": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "id": {
        -        "type": "number"
        -      },
        -      "media_type": {
        -        "const": "tv",
        -        "type": "string"
        -      },
        -      "name": {
        -        "type": "string"
        -      },
        -      "original_name": {
        -        "type": "string"
        -      },
        -      "overview": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "poster_url": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "vote_average": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "vote_count": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "year": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "media_type",
        -      "year",
        -      "first_air_date",
        -      "vote_average",
        -      "vote_count",
        -      "overview",
        -      "poster_url"
        -    ],
        -    "type": "object"
        -  },
        -  {
        -    "additionalProperties": false,
        -    "properties": {
        -      "id": {
        -        "type": "number"
        -      },
        -      "known_for": {
        -        "items": {
        -          "type": "string"
        -        },
        -        "type": "array"
        -      },
        -      "known_for_department": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "media_type": {
        -        "const": "person",
        -        "type": "string"
        -      },
        -      "name": {
        -        "type": "string"
        -      },
        -      "popularity": {
        -        "anyOf": [
        -          {
        -            "type": "number"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      },
        -      "profile_url": {
        -        "anyOf": [
        -          {
        -            "type": "string"
        -          },
        -          {
        -            "type": "null"
        -          }
        -        ]
        -      }
        -    },
        -    "required": [
        -      "id",
        -      "media_type",
        -      "known_for_department",
        -      "popularity",
        -      "profile_url",
        -      "known_for"
        -    ],
        -    "type": "object"
        -  }
        -]New value: +[
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "number"
        +      },
        +      "media_type": {
        +        "const": "movie",
        +        "type": "string"
        +      },
        +      "original_title": {
        +        "type": "string"
        +      },
        +      "overview": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "poster_url": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "release_date": {
        +        "anyOf": [
        +          {
        +            "format": "date",
        +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "title": {
        +        "type": "string"
        +      },
        +      "vote_average": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "vote_count": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "year": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "media_type",
        +      "year",
        +      "release_date",
        +      "vote_average",
        +      "vote_count",
        +      "overview",
        +      "poster_url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "first_air_date": {
        +        "anyOf": [
        +          {
        +            "format": "date",
        +            "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ],
        +        "default": null
        +      },
        +      "id": {
        +        "type": "number"
        +      },
        +      "media_type": {
        +        "const": "tv",
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "original_name": {
        +        "type": "string"
        +      },
        +      "overview": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "poster_url": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "vote_average": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "vote_count": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "year": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "media_type",
        +      "year",
        +      "first_air_date",
        +      "vote_average",
        +      "vote_count",
        +      "overview",
        +      "poster_url"
        +    ],
        +    "type": "object"
        +  },
        +  {
        +    "additionalProperties": false,
        +    "properties": {
        +      "id": {
        +        "type": "number"
        +      },
        +      "known_for": {
        +        "items": {
        +          "type": "string"
        +        },
        +        "type": "array"
        +      },
        +      "known_for_department": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "media_type": {
        +        "const": "person",
        +        "type": "string"
        +      },
        +      "name": {
        +        "type": "string"
        +      },
        +      "popularity": {
        +        "anyOf": [
        +          {
        +            "type": "number"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      },
        +      "profile_url": {
        +        "anyOf": [
        +          {
        +            "type": "string"
        +          },
        +          {
        +            "type": "null"
        +          }
        +        ]
        +      }
        +    },
        +    "required": [
        +      "id",
        +      "media_type",
        +      "known_for_department",
        +      "popularity",
        +      "profile_url",
        +      "known_for"
        +    ],
        +    "type": "object"
        +  }
        +]
    • Changedsearch_tv2 fields changed
      • changedOutput schema / properties / results / items / properties / first_air_date / anyOf
        Previous value: -[
        -  {
        -    "type": "string"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "format": "date",
        +    "pattern": "^(?:(?:\\d\\d[2468][048]|\\d\\d[13579][26]|\\d\\d0[48]|[02468][048]00|[13579][26]00)-02-29|\\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\\d|30)|(?:02)-(?:0[1-9]|1\\d|2[0-8])))$",
        +    "type": "string"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
      • addedOutput schema / properties / results / items / properties / first_air_date / default
        Added value: +null
    • Addedsearch_watch_providers
  3. 15 tool updatesv0.8.1
    • Removeddiscover_movies
    • Addeddiscover_tv
    • Removedget_collection
    • Addedget_movie
    • Addedget_movie_credits
    • Addedget_movie_genres
    • Removedget_movies
    • Addedget_person
    • Addedget_person_credits
    • Addedget_reviews
    • Removedget_tv
    • Addedget_tv_credits
    • Removedget_tv_recommendations
    • Addedget_videos
    • Addedget_watch_providers
  4. 18 tool updatesv0.8.1
    • Changeddiscover_movies3 fields changed
      • removedInput schema / properties / language / minLength
        Removed value: -2
      • addedInput schema / properties / language / pattern
        Added value: +"^[a-z]{2}(-[A-Z]{2})?$"
      • addedInput schema / properties / with_original_language / pattern
        Added value: +"^[a-z]{2}$"
    • Addedfind_by_imdb_id
    • Changedget_collection2 fields changed
      • removedInput schema / properties / language / minLength
        Removed value: -2
      • addedInput schema / properties / language / pattern
        Added value: +"^[a-z]{2}(-[A-Z]{2})?$"
    • Removedget_movie
    • Removedget_movie_credits
    • Changedget_movies2 fields changed
      • removedInput schema / properties / language / minLength
        Removed value: -2
      • addedInput schema / properties / language / pattern
        Added value: +"^[a-z]{2}(-[A-Z]{2})?$"
    • Addedget_ratings
    • Addedget_tv
    • Addedget_tv_episode
    • Addedget_tv_genres
    • Addedget_tv_recommendations
    • Changedget_tv_shows2 fields changed
      • removedInput schema / properties / language / minLength
        Removed value: -2
      • addedInput schema / properties / language / pattern
        Added value: +"^[a-z]{2}(-[A-Z]{2})?$"
    • Removedget_videos
    • Removedget_watch_providers
    • Changedsearch_movies2 fields changed
      • removedInput schema / properties / language / minLength
        Removed value: -2
      • addedInput schema / properties / language / pattern
        Added value: +"^[a-z]{2}(-[A-Z]{2})?$"
    • Addedsearch_multi
    • Changedsearch_people2 fields changed
      • removedInput schema / properties / language / minLength
        Removed value: -2
      • addedInput schema / properties / language / pattern
        Added value: +"^[a-z]{2}(-[A-Z]{2})?$"
    • Addedsearch_tv
  5. 30 tool updatesv0.8.0
    • Changeddiscover_movies10 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / certification / description
        Previous value: -"Filter by exact age certification, e.g. 'PG-13'. Requires certification_country."New value: +"Filter 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. Case-sensitive for movies ('pg-13' matches nothing; use 'PG-13'). 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."
      • changedInput schema / properties / min_rating / description
        Previous value: -"Minimum vote average (0-10)."New value: +"Minimum vote average (0-10). Must be <= max_rating if both are given."
      • changedInput schema / properties / page / description
        Previous value: -"1-based page number for pagination."New value: +"1-based page number for pagination (TMDB returns up to 20 results per page, max 500)."
      • changedInput schema / properties / page / maximum
        Previous value: -9007199254740991New value: +500
      • changedInput schema / properties / with_companies / description
        Previous value: -"Comma-separated TMDB production company ids."New value: +"Comma-separated TMDB production company ids (use search_companies to resolve names → ids)."
      • changedInput schema / properties / with_keywords / description
        Previous value: -"Comma-separated TMDB keyword (use search_keywords to resolve names → ids) ids."New value: +"Comma-separated TMDB keyword ids (use search_keywords to resolve names → ids)."
      • changedInput schema / properties / with_watch_providers / description
        Previous value: -"Comma-separated TMDB watch-provider (e.g. Netflix); requires watch_region ids."New value: +"Comma-separated TMDB watch-provider ids (e.g. Netflix's numeric id); requires watch_region to also be set."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "page": {
        +      "type": "number"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "id": {
        +            "type": "number"
        +          },
        +          "media_type": {
        +            "const": "movie",
        +            "type": "string"
        +          },
        +          "original_title": {
        +            "type": "string"
        +          },
        +          "overview": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "poster_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "release_date": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "vote_average": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "vote_count": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "year": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "media_type",
        +          "year",
        +          "release_date",
        +          "vote_average",
        +          "vote_count",
        +          "overview",
        +          "poster_url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total_pages": {
        +      "type": "number"
        +    },
        +    "total_results": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "results",
        +    "page",
        +    "total_pages",
        +    "total_results"
        +  ],
        +  "type": "object"
        +}
    • Removeddiscover_tv
    • Removedfind_by_imdb_id
    • Changedget_collection3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "id": {
        +      "type": "number"
        +    },
        +    "name": {
        +      "type": "string"
        +    },
        +    "overview": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "parts": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "id": {
        +            "type": "number"
        +          },
        +          "media_type": {
        +            "const": "movie",
        +            "type": "string"
        +          },
        +          "original_title": {
        +            "type": "string"
        +          },
        +          "overview": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "poster_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "release_date": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "vote_average": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "vote_count": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "year": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "media_type",
        +          "year",
        +          "release_date",
        +          "vote_average",
        +          "vote_count",
        +          "overview",
        +          "poster_url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "poster_url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "overview",
        +    "poster_url",
        +    "parts"
        +  ],
        +  "type": "object"
        +}
    • Changedget_movie4 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / include_ratings / description
        Previous value: -"If true (default), enrich the result with IMDb/Rotten Tomatoes/Metacritic ratings from OMDb (requires OMDB_API_KEY). Set false to skip the extra lookup when ratings are not needed."New value: +"If true (default), enrich the result with IMDb/Rotten Tomatoes/Metacritic ratings plus an awards summary (major-award wins/nominations — Oscars, Emmys, Golden Globes, etc., whatever OMDb aggregates; free text, not a structured count, and describes the whole film/show, not any one person's award) from OMDb (requires OMDB_API_KEY). Set false to skip the extra lookup when ratings are not needed."
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "budget_usd": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "certification": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "certification_region": {
        +      "type": "string"
        +    },
        +    "certifications": {
        +      "additionalProperties": {
        +        "type": "string"
        +      },
        +      "propertyNames": {
        +        "type": "string"
        +      },
        +      "type": "object"
        +    },
        +    "collection": {
        +      "anyOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "id": {
        +              "type": "number"
        +            },
        +            "name": {
        +              "type": "string"
        +            },
        +            "poster_url": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "required": [
        +            "poster_url"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "genres": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "homepage": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "id": {
        +      "type": "number"
        +    },
        +    "imdb_id": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "imdb_url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "media_type": {
        +      "const": "movie",
        +      "type": "string"
        +    },
        +    "origin_country": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "original_language": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "original_title": {
        +      "type": "string"
        +    },
        +    "overview": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "popularity": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "poster_url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "production_companies": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "ratings": {
        +      "oneOf": [
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "found": {
        +              "const": false,
        +              "type": "boolean"
        +            },
        +            "reason": {
        +              "type": "string"
        +            }
        +          },
        +          "required": [
        +            "found",
        +            "reason"
        +          ],
        +          "type": "object"
        +        },
        +        {
        +          "additionalProperties": false,
        +          "properties": {
        +            "awards": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "found": {
        +              "const": true,
        +              "type": "boolean"
        +            },
        +            "imdb_id": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "imdb_rating": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "imdb_votes": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "metascore": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "rated": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "ratings": {
        +              "items": {
        +                "additionalProperties": false,
        +                "properties": {
        +                  "source": {
        +                    "type": "string"
        +                  },
        +                  "value": {
        +                    "type": "string"
        +                  }
        +                },
        +                "type": "object"
        +              },
        +              "type": "array"
        +            },
        +            "rotten_tomatoes": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "runtime": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "title": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            },
        +            "year": {
        +              "anyOf": [
        +                {
        +                  "type": "string"
        +                },
        +                {
        +                  "type": "null"
        +                }
        +              ]
        +            }
        +          },
        +          "required": [
        +            "found",
        +            "imdb_id",
        +            "title",
        +            "year",
        +            "rated",
        +            "runtime",
        +            "imdb_rating",
        +            "imdb_votes",
        +            "metascore",
        +            "rotten_tomatoes",
        +            "awards",
        +            "ratings"
        +          ],
        +          "type": "object"
        +        }
        +      ]
        +    },
        +    "release_date": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "revenue_usd": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "runtime_minutes": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "spoken_languages": {
        +      "items": {
        +        "type": "string"
        +      },
        +      "type": "array"
        +    },
        +    "status": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "tagline": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "title": {
        +      "type": "string"
        +    },
        +    "tmdb_url": {
        +      "type": "string"
        +    },
        +    "vote_average": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "vote_count": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "year": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "id",
        +    "imdb_id",
        +    "media_type",
        +    "certification",
        +    "certification_region",
        +    "certifications",
        +    "tagline",
        +    "overview",
        +    "year",
        +    "release_date",
        +    "runtime_minutes",
        +    "status",
        +    "genres",
        +    "vote_average",
        +    "vote_count",
        +    "popularity",
        +    "original_language",
        +    "spoken_languages",
        +    "production_companies",
        +    "origin_country",
        +    "collection",
        +    "budget_usd",
        +    "revenue_usd",
        +    "homepage",
        +    "poster_url",
        +    "tmdb_url",
        +    "imdb_url"
        +  ],
        +  "type": "object"
        +}
    • Changedget_movie_credits3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "cast": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "character": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "id": {
        +            "type": "number"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "required": [
        +          "character"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "crew": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "department": {
        +            "type": "string"
        +          },
        +          "id": {
        +            "type": "number"
        +          },
        +          "job": {
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "cast",
        +    "crew"
        +  ],
        +  "type": "object"
        +}
    • Removedget_movie_genres
    • Changedget_movie_recommendations5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / page / description
        Previous value: -"1-based page number for pagination."New value: +"1-based page number for pagination (TMDB returns up to 20 results per page, max 500)."
      • changedInput schema / properties / page / maximum
        Previous value: -9007199254740991New value: +500
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "page": {
        +      "type": "number"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "id": {
        +            "type": "number"
        +          },
        +          "media_type": {
        +            "const": "movie",
        +            "type": "string"
        +          },
        +          "original_title": {
        +            "type": "string"
        +          },
        +          "overview": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "poster_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "release_date": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "vote_average": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "vote_count": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "year": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "media_type",
        +          "year",
        +          "release_date",
        +          "vote_average",
        +          "vote_count",
        +          "overview",
        +          "poster_url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total_pages": {
        +      "type": "number"
        +    },
        +    "total_results": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "results",
        +    "page",
        +    "total_pages",
        +    "total_results"
        +  ],
        +  "type": "object"
        +}
    • Addedget_movies
    • Removedget_person
    • Removedget_person_credits
    • Removedget_ratings
    • Removedget_reviews
    • Removedget_similar
    • Removedget_trending
    • Removedget_tv
    • Removedget_tv_credits
    • Removedget_tv_episode
    • Removedget_tv_genres
    • Removedget_tv_recommendations
    • Changedget_tv_season3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "air_date": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "episode_count": {
        +      "type": "number"
        +    },
        +    "episodes": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "air_date": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "episode_number": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "name": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "overview": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "runtime_minutes": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "vote_average": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "episode_number",
        +          "name",
        +          "air_date",
        +          "runtime_minutes",
        +          "vote_average",
        +          "overview"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "name": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "overview": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "poster_url": {
        +      "anyOf": [
        +        {
        +          "type": "string"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    },
        +    "season_number": {
        +      "anyOf": [
        +        {
        +          "type": "number"
        +        },
        +        {
        +          "type": "null"
        +        }
        +      ]
        +    }
        +  },
        +  "required": [
        +    "season_number",
        +    "name",
        +    "air_date",
        +    "overview",
        +    "poster_url",
        +    "episode_count",
        +    "episodes"
        +  ],
        +  "type": "object"
        +}
    • Addedget_tv_shows
    • Changedget_videos3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "results": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "name": {
        +            "type": "string"
        +          },
        +          "official": {
        +            "anyOf": [
        +              {
        +                "type": "boolean"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "published_at": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "site": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "type": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "type",
        +          "site",
        +          "official",
        +          "url",
        +          "published_at"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    }
        +  },
        +  "required": [
        +    "results"
        +  ],
        +  "type": "object"
        +}
    • Changedget_watch_providers3 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "oneOf": [
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "available": {
        +          "const": false,
        +          "type": "boolean"
        +        },
        +        "available_regions": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "region": {
        +          "type": "string"
        +        }
        +      },
        +      "required": [
        +        "region",
        +        "available",
        +        "available_regions"
        +      ],
        +      "type": "object"
        +    },
        +    {
        +      "additionalProperties": false,
        +      "properties": {
        +        "ads": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "available": {
        +          "const": true,
        +          "type": "boolean"
        +        },
        +        "available_regions": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "buy": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "free": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "link": {
        +          "anyOf": [
        +            {
        +              "type": "string"
        +            },
        +            {
        +              "type": "null"
        +            }
        +          ]
        +        },
        +        "region": {
        +          "type": "string"
        +        },
        +        "rent": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        },
        +        "streaming": {
        +          "items": {
        +            "type": "string"
        +          },
        +          "type": "array"
        +        }
        +      },
        +      "required": [
        +        "region",
        +        "available",
        +        "link",
        +        "streaming",
        +        "free",
        +        "ads",
        +        "rent",
        +        "buy",
        +        "available_regions"
        +      ],
        +      "type": "object"
        +    }
        +  ],
        +  "type": "object"
        +}
    • Addedsearch_companies
    • Changedsearch_keywords5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / page / description
        Previous value: -"1-based page number for pagination."New value: +"1-based page number for pagination (TMDB returns up to 20 results per page, max 500)."
      • changedInput schema / properties / page / maximum
        Previous value: -9007199254740991New value: +500
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "page": {
        +      "type": "number"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "id": {
        +            "type": "number"
        +          },
        +          "name": {
        +            "type": "string"
        +          }
        +        },
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total_pages": {
        +      "type": "number"
        +    },
        +    "total_results": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "results",
        +    "page",
        +    "total_pages",
        +    "total_results"
        +  ],
        +  "type": "object"
        +}
    • Changedsearch_movies5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / page / description
        Previous value: -"1-based page number for pagination."New value: +"1-based page number for pagination (TMDB returns up to 20 results per page, max 500)."
      • changedInput schema / properties / page / maximum
        Previous value: -9007199254740991New value: +500
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "page": {
        +      "type": "number"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "id": {
        +            "type": "number"
        +          },
        +          "media_type": {
        +            "const": "movie",
        +            "type": "string"
        +          },
        +          "original_title": {
        +            "type": "string"
        +          },
        +          "overview": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "poster_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "release_date": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "title": {
        +            "type": "string"
        +          },
        +          "vote_average": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "vote_count": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "year": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "media_type",
        +          "year",
        +          "release_date",
        +          "vote_average",
        +          "vote_count",
        +          "overview",
        +          "poster_url"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total_pages": {
        +      "type": "number"
        +    },
        +    "total_results": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "results",
        +    "page",
        +    "total_pages",
        +    "total_results"
        +  ],
        +  "type": "object"
        +}
    • Removedsearch_multi
    • Changedsearch_people5 fields changed
      • changedInput schema / $schema
        Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
      • addedInput schema / additionalProperties
        Added value: +false
      • changedInput schema / properties / page / description
        Previous value: -"1-based page number for pagination."New value: +"1-based page number for pagination (TMDB returns up to 20 results per page, max 500)."
      • changedInput schema / properties / page / maximum
        Previous value: -9007199254740991New value: +500
      • changedOutput schema / (root)
        Previous value: -nullNew value: +{
        +  "$schema": "https://json-schema.org/draft/2020-12/schema",
        +  "additionalProperties": false,
        +  "properties": {
        +    "page": {
        +      "type": "number"
        +    },
        +    "results": {
        +      "items": {
        +        "additionalProperties": false,
        +        "properties": {
        +          "id": {
        +            "type": "number"
        +          },
        +          "known_for": {
        +            "items": {
        +              "type": "string"
        +            },
        +            "type": "array"
        +          },
        +          "known_for_department": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "media_type": {
        +            "const": "person",
        +            "type": "string"
        +          },
        +          "name": {
        +            "type": "string"
        +          },
        +          "popularity": {
        +            "anyOf": [
        +              {
        +                "type": "number"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          },
        +          "profile_url": {
        +            "anyOf": [
        +              {
        +                "type": "string"
        +              },
        +              {
        +                "type": "null"
        +              }
        +            ]
        +          }
        +        },
        +        "required": [
        +          "id",
        +          "media_type",
        +          "known_for_department",
        +          "popularity",
        +          "profile_url",
        +          "known_for"
        +        ],
        +        "type": "object"
        +      },
        +      "type": "array"
        +    },
        +    "total_pages": {
        +      "type": "number"
        +    },
        +    "total_results": {
        +      "type": "number"
        +    }
        +  },
        +  "required": [
        +    "results",
        +    "page",
        +    "total_pages",
        +    "total_results"
        +  ],
        +  "type": "object"
        +}
    • Removedsearch_tv
  6. 27 tool updatesv0.3.0
    • First observeddiscover_movies
    • First observeddiscover_tv
    • First observedfind_by_imdb_id
    • First observedget_collection
    • First observedget_movie
    • First observedget_movie_credits
    • First observedget_movie_genres
    • First observedget_movie_recommendations
    • First observedget_person
    • First observedget_person_credits
    • First observedget_ratings
    • First observedget_reviews
    • First observedget_similar
    • First observedget_trending
    • First observedget_tv
    • First observedget_tv_credits
    • First observedget_tv_episode
    • First observedget_tv_genres
    • First observedget_tv_recommendations
    • First observedget_tv_season
    • First observedget_videos
    • First observedget_watch_providers
    • First observedsearch_keywords
    • First observedsearch_movies
    • First observedsearch_multi
    • First observedsearch_people
    • First observedsearch_tv

TDQS

A4.5/5.0
Disambiguation5/5

Every tool has a clearly distinct purpose with detailed descriptions that highlight differences (e.g., search_movies vs search_tv vs search_multi, get_movie vs get_movies, get_movie_recommendations vs get_similar). No two tools overlap ambiguously.

Naming Consistency5/5

All tools follow a consistent verb_noun pattern (e.g., search_movies, get_movie_credits, discover_tv). There is no mixing of naming conventions, making the set predictable for an agent.

Tool Count4/5

With 31 tools, the count is on the higher side, but it is justified given the broad scope of TMDB data covered (movies, TV, people, collections, trending, watch providers, etc.). Each tool serves a specific need, so the count is reasonable for the server's purpose.

Completeness5/5

The tool set provides comprehensive coverage for reading TMDB data: search, discover, detailed get endpoints for movies/TV/people, credits, recommendations, similar, reviews, videos, ratings, watch providers, genres, trending, and IMDb resolution. No obvious gaps for a read-focused data server.

Maintenance

ActivityActive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    A
    quality
    D
    maintenance
    An MCP server that wraps The Movie Database (TMDB) API, enabling search for movies and TV shows, retrieval of movie details, recommendations, similar movies, trending content, streaming providers, and movie discovery.
    8
    -
  • F
    license
    A
    quality
    D
    maintenance
    An MCP server that wraps the TMDB API, enabling search of movies and TV shows, retrieval of details, trending titles, recommendations, and streaming provider information.
    8
    -
  • A
    license
    A
    quality
    C
    maintenance
    MCP server for the OMDb API - search movies, series, and episodes from any MCP-compatible client.
    5
    MIT
  • F
    license
    B
    quality
    C
    maintenance
    Enables searching, discovering, and reading movie information from TMDB through MCP tools.
    5
    -

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