Find movies and shows for tonight with current trends, mood, taste and streaming options.
Maintain this server? Claim it
Call this server's tools from your browser. Nothing to install.
Requests go through mcptry because browsers can't call most MCP servers directly. Header values are sent to the server for that request only and are never stored or logged.
Tool list from our last check. Connect live to refresh it.
Start here for "Netflix tonight", "What should I watch?", "Good shows", "Something light" or what's popular on streaming, including when an account is connected. Find current candidates first, then judge their fit for the viewer's mood. No reference title or preference questionnaire is needed. Returns up to twelve candidates from the latest available U.S. audience charts, with ReelRecs Score, descriptions, genres, subgenres, tags, keywords, subjects, cast, directors, runtime and links. An authorized connection can also add personal Rec Score predictions to these current choices. Streaming-service filtering uses constraints.providers with constraints.country; country alone does not establish availability. Also supports genre, runtime, first-release-year and exclusion filters. Trending and rising measure attention at chart_as_of; popular measures broader audience demand. chart_freshness and chart_age_days distinguish dated discovery snapshots from current rankings. Chart attention is distinct from new releases, and the chart market is distinct from availability country. Provides movie and series discovery, not live sports fixtures or broadcast schedules. No ReelRecs account required.
Pick your client. Values in capitals, like YOUR_TOKEN, are yours to fill in.
Run in a terminal
claude mcp add --transport http reelrecs https://mcp.reelrecs.com/mcp
Start here for "Netflix tonight", "What should I watch?", "Good shows", "Something light" or what's popular on streaming, including when an account is connected. Find current candidates first, then judge their fit for the viewer's mood. No reference title or preference questionnaire is needed. Returns up to twelve candidates from the latest available U.S. audience charts, with ReelRecs Score, descriptions, genres, subgenres, tags, keywords, subjects, cast, directors, runtime and links. An authorized connection can also add personal Rec Score predictions to these current choices. Streaming-service filtering uses constraints.providers with constraints.country; country alone does not establish availability. Also supports genre, runtime, first-release-year and exclusion filters. Trending and rising measure attention at chart_as_of; popular measures broader audience demand. chart_freshness and chart_age_days distinguish dated discovery snapshots from current rankings. Chart attention is distinct from new releases, and the chart market is distinct from availability country. Provides movie and series discovery, not live sports fixtures or broadcast schedules. No ReelRecs account required.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"$defs": {
"Constraints": {
"type": "object",
"title": "Constraints",
"properties": {
"kind": {
"enum": [
"any",
"movie",
"show"
],
"type": "string",
"title": "Kind",
"default": "any"
},
"genres": {
"type": "array",
"items": {
"type": "string"
},
"title": "Genres",
"maxItems": 5
},
"country": {
"type": "string",
"title": "Country",
"default": "US",
"pattern": "^[A-Z]{2}$",
"description": "Two-letter availability country, such as US or GB. Use known location; US is the default. Does not establish availability unless providers are also supplied."
},
"variety": {
"type": "boolean",
"title": "Variety",
"default": false
},
"year_to": {
"anyOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1870
},
{
"type": "null"
}
],
"title": "Year To",
"default": null,
"description": "Latest original release year."
},
"languages": {
"type": "array",
"items": {
"type": "string"
},
"title": "Languages",
"maxItems": 5
},
"providers": {
"type": "array",
"items": {
"type": "string"
},
"title": "Providers",
"maxItems": 5,
"description": "Streaming providers to require. Country and offer_types filter availability only when providers are supplied."
},
"year_from": {
"anyOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1870
},
{
"type": "null"
}
],
"title": "Year From",
"default": null,
"description": "Earliest original release year. A series uses its first-release year, not the year of a returning season or addition to a service."
},
"exclude_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Exclude Ids",
"maxItems": 100,
"description": "Resolved titles to leave out, including a viewer's 'seen it' reaction. Keep earlier constraints when refining. For disliked-title affinities, use avoid_seed_ids on recommend_titles or recommend_for_me instead."
},
"offer_types": {
"type": "array",
"items": {
"enum": [
"subscription",
"free",
"ads",
"rent",
"buy"
],
"type": "string"
},
"title": "Offer Types"
},
"max_movie_minutes": {
"anyOf": [
{
"type": "integer",
"maximum": 600,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Movie Minutes",
"default": null,
"description": "Maximum film runtime in minutes. Does not restrict series; set kind=movie for a movie-only request."
},
"max_episode_minutes": {
"anyOf": [
{
"type": "integer",
"maximum": 600,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Episode Minutes",
"default": null,
"description": "Maximum runtime per episode in minutes. Does not describe a whole season or restrict films."
}
},
"additionalProperties": false
}
},
"title": "get_chartsArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "ChartRequest",
"properties": {
"chart": {
"enum": [
"popular",
"trending",
"rising"
],
"type": "string",
"title": "Chart",
"default": "trending",
"description": "trending: current ReelRecs trending slate; rising: titles gaining audience attention over 7d or 28d; popular: broad Pulse audience demand. Trending or rising can include older titles attracting attention now."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 12,
"maximum": 12,
"minimum": 1,
"description": "Candidate shortlist size. Retrieve twelve for room to judge mood and interests; usually present two or three."
},
"market": {
"type": "string",
"title": "Market",
"default": "US",
"pattern": "^[A-Z]{2}$",
"description": "Audience chart market; currently US only. With constraints.providers, constraints.country selects the country for the availability filter. Country alone does not filter availability."
},
"window": {
"enum": [
"current",
"7d",
"28d"
],
"type": "string",
"title": "Window",
"default": "current",
"description": "Popular and trending accept current only. Rising accepts 7d or 28d; current selects 7d. The response identifies the actual window and source date."
},
"constraints": {
"$ref": "#/$defs/Constraints"
}
},
"additionalProperties": false
}
}
}Use for my bookmarks, my watchlist, saved movies or shows, did I save this title, and help me pick from my list. Lists the connected viewer's own saves, newest first; query searches the full list by title fragment, kind filters movies or shows, and next_offset retrieves another page. Start a simple browse with the default page and a short linked list; show remaining fetched titles before fetching more when requested or when it helps choose. matched_count is the total for the applied filters. If a movie/show breakdown is requested, use kind-filtered counts rather than estimating it. Returns saved dates, descriptions, genres, subgenres, tags, runtime, ReelRecs links and audience scores. With personal recommendation permission, also adds Your Rec Score predictions. Keep picks within the returned bookmarks when requested, check watch options, and curate a few fitting choices using available returned title links. Rated or watched titles can still be bookmarked; do not infer history or likes from a save. Requires bookmarks:read permission. Cannot read another account or add/remove saves.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"title": "get_my_bookmarksArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "BookmarksRequest",
"properties": {
"kind": {
"enum": [
"any",
"movie",
"show"
],
"type": "string",
"title": "Kind",
"default": "any"
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 12,
"maximum": 50,
"minimum": 1,
"description": "Saved titles per page. Usually retrieve twelve to help choose; request more when listing bookmarks."
},
"query": {
"type": "string",
"title": "Query",
"default": "",
"maxLength": 120,
"description": "Optional title name or fragment to search within the viewer's bookmarks. Empty lists recent saves."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"maximum": 100000,
"minimum": 0,
"description": "Use next_offset from the previous page to see more saved titles."
}
},
"additionalProperties": false
}
}
}Requires a connected ReelRecs account. Returns display identity, whether saved taste is available, and the viewer's saved streaming-service names in streaming_preferences.services. Use these when the viewer asks about their services. get_watch_options also matches offers to these preferences. Never exports full history.
No arguments.
{
"type": "object",
"title": "get_my_profileArguments",
"properties": {}
}Use for my ratings, all the movies and shows I rated, understand my taste, what I loved or disliked, and have I rated this title. Omit title_ids to browse the viewer's full rated list, independently of bookmarks. Browse with an optional title fragment, kind, highest/lowest/title sort, and next_offset; up to 50 titles per page. For a requested full-history taste analysis, read all pages and use both high and low ratings with the returned descriptions, genres, subgenres and tags. Curate a few picks using that evidence; personal predictions are secondary when requested. Alternatively supply up to ten resolved title_ids to check saved ratings or confirmed absence for those specific titles. Requires ratings:read. Saved ratings, audience scores and personal predictions are distinct. A successful lookup confirms the connection. Cannot read another account or change ratings.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"title": "get_my_ratingsArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "RatingsRequest",
"properties": {
"kind": {
"enum": [
"any",
"movie",
"show"
],
"type": "string",
"title": "Kind",
"default": "any"
},
"sort": {
"enum": [
"title",
"highest",
"lowest"
],
"type": "string",
"title": "Sort",
"default": "title",
"description": "Browse alphabetically, highest ratings first, or lowest ratings first. Use both high and low ratings when exploring taste."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 12,
"maximum": 50,
"minimum": 1,
"description": "Rated titles per page. Use up to fifty and follow next_offset for a requested full-history taste analysis."
},
"query": {
"type": "string",
"title": "Query",
"default": "",
"maxLength": 120,
"description": "Optional title fragment to search across all rated titles when title_ids is empty."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"minimum": 0,
"description": "Use next_offset to continue through the rated list."
},
"title_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Title Ids",
"maxItems": 10,
"description": "Optional specific titles to check, including whether they are unrated. Omit to browse the viewer's rated movies and shows without knowing their IDs."
}
},
"additionalProperties": false
}
}
}Find the connected viewer's accepted Watch+ groups by group or member name, such as Jenna. Returns current accepted member IDs, display names and app usernames, never emails or pending invitees. Use these IDs for the people watching now, then recommend_for_group. Match usernames to distinguish duplicate names; when the same people share several groups, prefer the smallest matching group unless the viewer names one. Proceed directly when the people are clear. Requires watchplus:read permission.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"title": "get_my_watchplus_groupsArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "GroupSearchRequest",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 10,
"maximum": 20,
"minimum": 1
},
"query": {
"type": "string",
"title": "Query",
"default": "",
"maxLength": 80,
"description": "Optional group or accepted member name, such as Jenna. Finds only the connected viewer's accepted Watch+ groups."
},
"offset": {
"type": "integer",
"title": "Offset",
"default": 0,
"maximum": 1000,
"minimum": 0
}
},
"additionalProperties": false
}
}
}Find optional content references for one resolved movie or show when a comparison is useful. Returns ReelRecs Score out of 10, descriptions, tags, subgenres and links. Candidates are selected from content without audience-score or viewing/rating-affinity selection. They do not represent a shared group of raters, and no peer average is calculated. Missing scores are null. Streaming offers are not included.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"title": "get_title_peersArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "PeerRequest",
"required": [
"title_id"
],
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 12,
"maximum": 20,
"minimum": 1,
"description": "Reference candidates for the assistant to assess. Choose only useful comparisons; a fixed peer count is not required."
},
"title_id": {
"type": "string",
"title": "Title Id",
"pattern": "^tt\\d{5,12}$",
"description": "Resolved title to compare with content peers. Use search_titles for its exact version first."
}
},
"additionalProperties": false
}
}
}Find where to watch a movie or show, including on the viewer's saved services. Resolve names with search_titles first, then pass up to ten exact IDs. Returns providers, offer types, observation dates and availability freshness. With personal access, also returns streaming_preferences.services and matches_saved_service on each offer. Lead with matching included offers; matching rentals and purchases still cost extra. Use saved services without asking the viewer to repeat them. Subscription, free/ad-supported, rental and purchase are separate. An empty or stale result does not prove worldwide unavailability. No ReelRecs account required for public offers.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"title": "get_watch_optionsArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "WatchRequest",
"required": [
"title_ids"
],
"properties": {
"country": {
"type": "string",
"title": "Country",
"default": "US",
"pattern": "^[A-Z]{2}$",
"description": "Use the viewer's known two-letter country, such as US or GB. If unknown, US is the default; identify that country in the answer."
},
"title_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Title Ids",
"maxItems": 10,
"minItems": 1,
"description": "Copy exact title IDs from search_titles or other ReelRecs results. Resolve names and versions first."
}
},
"additionalProperties": false
}
}
}Explore the selected accepted group members' accessible tastes. Returns liked and less-liked examples and descriptive patterns. Supply up to ten resolved title IDs for each person's predicted rating, saved rating, Watch+ interest/pass and relevant saved references, including evidence beyond the overview examples. Helps explain shared appeal, differences, reservations and compromises. Profiles respect existing privacy and blocks. Missing evidence is unknown. Similar saved titles illustrate content overlap; they do not explain the scoring model's causes. Requires watchplus:read; cannot read strangers, pending invitations, private chats or change anything.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"title": "get_watchplus_contextArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "GroupContextRequest",
"required": [
"group_id"
],
"properties": {
"group_id": {
"type": "string",
"title": "Group Id",
"maxLength": 64,
"minLength": 1,
"description": "Copy a group_id from get_my_watchplus_groups; a group name or an email is not an identifier."
},
"title_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Title Ids",
"maxItems": 10,
"description": "Optional resolved titles to compare for these people. Retrieves relevant saved likes and dislikes across their accessible history, alongside each person's prediction, saved rating and Watch+ vote."
},
"member_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^wm[1-9]\\d{0,18}$"
},
"title": "Member Ids",
"maxItems": 8,
"description": "Copy member_ids from this group's roster for the people watching now. Empty means everyone, up to eight. Do not infer who is watching from membership alone."
}
},
"additionalProperties": false
}
}
}Choose what the accepted Watch+ members watching together might enjoy tonight. Resolve the group and people with get_my_watchplus_groups first. Returns up to twelve compact candidates for the assistant to curate into two or three, with rich title details, audience ReelRecs Score, separate per-person Rec Score predictions, saved ratings, Watch+ votes and related likes/dislikes. Prioritizes balanced fit and current interest by default; focus=all_titles explores the library. Pass votes lower priority without changing predictions. Excludes known seen titles unless allow_rewatch. Use current mood, positive/disliked references and streaming filters when known; do not demand a questionnaire. Predictions require fresh completed scores; missing coverage never means agreement. Requires watchplus:read and current accepted membership. Privacy and blocks are checked again before returning.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"$defs": {
"Constraints": {
"type": "object",
"title": "Constraints",
"properties": {
"kind": {
"enum": [
"any",
"movie",
"show"
],
"type": "string",
"title": "Kind",
"default": "any"
},
"genres": {
"type": "array",
"items": {
"type": "string"
},
"title": "Genres",
"maxItems": 5
},
"country": {
"type": "string",
"title": "Country",
"default": "US",
"pattern": "^[A-Z]{2}$",
"description": "Two-letter availability country, such as US or GB. Use known location; US is the default. Does not establish availability unless providers are also supplied."
},
"variety": {
"type": "boolean",
"title": "Variety",
"default": false
},
"year_to": {
"anyOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1870
},
{
"type": "null"
}
],
"title": "Year To",
"default": null,
"description": "Latest original release year."
},
"languages": {
"type": "array",
"items": {
"type": "string"
},
"title": "Languages",
"maxItems": 5
},
"providers": {
"type": "array",
"items": {
"type": "string"
},
"title": "Providers",
"maxItems": 5,
"description": "Streaming providers to require. Country and offer_types filter availability only when providers are supplied."
},
"year_from": {
"anyOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1870
},
{
"type": "null"
}
],
"title": "Year From",
"default": null,
"description": "Earliest original release year. A series uses its first-release year, not the year of a returning season or addition to a service."
},
"exclude_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Exclude Ids",
"maxItems": 100,
"description": "Resolved titles to leave out, including a viewer's 'seen it' reaction. Keep earlier constraints when refining. For disliked-title affinities, use avoid_seed_ids on recommend_titles or recommend_for_me instead."
},
"offer_types": {
"type": "array",
"items": {
"enum": [
"subscription",
"free",
"ads",
"rent",
"buy"
],
"type": "string"
},
"title": "Offer Types"
},
"max_movie_minutes": {
"anyOf": [
{
"type": "integer",
"maximum": 600,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Movie Minutes",
"default": null,
"description": "Maximum film runtime in minutes. Does not restrict series; set kind=movie for a movie-only request."
},
"max_episode_minutes": {
"anyOf": [
{
"type": "integer",
"maximum": 600,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Episode Minutes",
"default": null,
"description": "Maximum runtime per episode in minutes. Does not describe a whole season or restrict films."
}
},
"additionalProperties": false
}
},
"title": "recommend_for_groupArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "GroupRecommendRequest",
"required": [
"group_id"
],
"properties": {
"focus": {
"enum": [
"tonight",
"all_titles"
],
"type": "string",
"title": "Focus",
"default": "tonight",
"description": "tonight gives current trending choices priority alongside shared taste. all_titles explores the wider library. Explicit title or mood references guide either choice."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 12,
"maximum": 12,
"minimum": 1,
"description": "Candidate shortlist size for the assistant to choose from, not the number to show the viewer. Usually retrieve twelve and present two or three fitting choices."
},
"intent": {
"enum": [
"watched",
"loved",
"into"
],
"type": "string",
"title": "Intent",
"default": "loved",
"description": "Evidence emphasis: watched for viewing, loved for ratings, into for topics and mood references. The general title neighborhood is shared. This field does not establish viewer history; qualities express the experience wanted."
},
"group_id": {
"type": "string",
"title": "Group Id",
"maxLength": 64,
"minLength": 1,
"description": "Copy a group_id from get_my_watchplus_groups; a group name or an email is not an identifier."
},
"seed_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Seed Ids",
"maxItems": 3,
"description": "Resolved positive reference titles. These can be viewer likes or assistant-chosen examples of a requested mood. A reference alone does not establish that the viewer watched or liked it."
},
"qualities": {
"type": "string",
"title": "Qualities",
"default": "",
"maxLength": 300,
"description": "The experience wanted now: mood, tone, pace, themes and qualities to avoid, in natural language. Preserve refinements such as absorbing but not draining or more playful. This request does not change saved taste."
},
"member_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^wm[1-9]\\d{0,18}$"
},
"title": "Member Ids",
"maxItems": 8,
"description": "Copy member_ids from this group's roster for the people watching now. Empty means everyone, up to eight. Do not infer who is watching from membership alone."
},
"constraints": {
"$ref": "#/$defs/Constraints"
},
"allow_rewatch": {
"type": "boolean",
"title": "Allow Rewatch",
"default": false
},
"avoid_seed_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Avoid Seed Ids",
"maxItems": 3,
"description": "Titles the viewer disliked. Reduces candidates closer to these than to the positive references. This differs from exclude_ids, which only hides exact titles. Uses exact versions; a title dislike alone does not specify an unwanted theme."
},
"use_saved_services": {
"type": "boolean",
"title": "Use Saved Services",
"default": false,
"description": "Use only the connected viewer's saved services when no providers are supplied. Does not reveal other members' subscriptions."
}
},
"additionalProperties": false
}
}
}Use when the viewer asks to explore their saved taste or the wider library, such as "recommend based on my ratings". For an open-ended "Netflix tonight", "What should I watch?" or mood-only start, use get_charts first even when connected; current chart candidates can include personal predictions too. This tool ranks the wider catalogue by saved taste, positive or disliked reference titles and desired qualities. Returns up to twelve candidates with rich title context, audience ReelRecs Score, personal Your Rec Score predictions and links. Both scores use a ten-point scale; missing predictions are null. Weigh personal fit with the viewing experience and tonight's mood. Excludes watched titles unless rewatch is requested and can use saved streaming services. Saved taste describes lasting preferences; the qualities_applied field identifies whether mood text affected ranking. Requires an authorized ReelRecs account and never accepts an account identifier.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"$defs": {
"Constraints": {
"type": "object",
"title": "Constraints",
"properties": {
"kind": {
"enum": [
"any",
"movie",
"show"
],
"type": "string",
"title": "Kind",
"default": "any"
},
"genres": {
"type": "array",
"items": {
"type": "string"
},
"title": "Genres",
"maxItems": 5
},
"country": {
"type": "string",
"title": "Country",
"default": "US",
"pattern": "^[A-Z]{2}$",
"description": "Two-letter availability country, such as US or GB. Use known location; US is the default. Does not establish availability unless providers are also supplied."
},
"variety": {
"type": "boolean",
"title": "Variety",
"default": false
},
"year_to": {
"anyOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1870
},
{
"type": "null"
}
],
"title": "Year To",
"default": null,
"description": "Latest original release year."
},
"languages": {
"type": "array",
"items": {
"type": "string"
},
"title": "Languages",
"maxItems": 5
},
"providers": {
"type": "array",
"items": {
"type": "string"
},
"title": "Providers",
"maxItems": 5,
"description": "Streaming providers to require. Country and offer_types filter availability only when providers are supplied."
},
"year_from": {
"anyOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1870
},
{
"type": "null"
}
],
"title": "Year From",
"default": null,
"description": "Earliest original release year. A series uses its first-release year, not the year of a returning season or addition to a service."
},
"exclude_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Exclude Ids",
"maxItems": 100,
"description": "Resolved titles to leave out, including a viewer's 'seen it' reaction. Keep earlier constraints when refining. For disliked-title affinities, use avoid_seed_ids on recommend_titles or recommend_for_me instead."
},
"offer_types": {
"type": "array",
"items": {
"enum": [
"subscription",
"free",
"ads",
"rent",
"buy"
],
"type": "string"
},
"title": "Offer Types"
},
"max_movie_minutes": {
"anyOf": [
{
"type": "integer",
"maximum": 600,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Movie Minutes",
"default": null,
"description": "Maximum film runtime in minutes. Does not restrict series; set kind=movie for a movie-only request."
},
"max_episode_minutes": {
"anyOf": [
{
"type": "integer",
"maximum": 600,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Episode Minutes",
"default": null,
"description": "Maximum runtime per episode in minutes. Does not describe a whole season or restrict films."
}
},
"additionalProperties": false
}
},
"title": "recommend_for_meArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "PersonalRequest",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 12,
"maximum": 12,
"minimum": 1,
"description": "Candidate shortlist size for the assistant to choose from, not the number to show the viewer. Usually retrieve twelve and present two or three fitting choices."
},
"intent": {
"enum": [
"watched",
"loved",
"into"
],
"type": "string",
"title": "Intent",
"default": "loved",
"description": "Evidence emphasis: watched for viewing, loved for ratings, into for topics and mood references. The general title neighborhood is shared. This field does not establish viewer history; qualities express the experience wanted."
},
"seed_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Seed Ids",
"maxItems": 3,
"description": "Resolved positive reference titles. These can be viewer likes or assistant-chosen examples of a requested mood. A reference alone does not establish that the viewer watched or liked it."
},
"qualities": {
"type": "string",
"title": "Qualities",
"default": "",
"maxLength": 300,
"description": "The experience wanted now: mood, tone, pace, themes and qualities to avoid, in natural language. Preserve refinements such as absorbing but not draining or more playful. This request does not change saved taste."
},
"constraints": {
"$ref": "#/$defs/Constraints"
},
"allow_rewatch": {
"type": "boolean",
"title": "Allow Rewatch",
"default": false
},
"avoid_seed_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Avoid Seed Ids",
"maxItems": 3,
"description": "Titles the viewer disliked. Reduces candidates closer to these than to the positive references. This differs from exclude_ids, which only hides exact titles. Uses exact versions; a title dislike alone does not specify an unwanted theme."
},
"use_saved_services": {
"type": "boolean",
"title": "Use Saved Services",
"default": false
}
},
"additionalProperties": false
}
}
}Find movies like X, shows to watch after Y, or alternatives when someone liked one title but disliked another. Resolve names with search_titles first, then pass positive and disliked reference IDs plus any desired qualities. For an open-ended or mood-only start, use get_charts first. Returns up to twelve candidates with ReelRecs Score, descriptions, genres, subgenres, subjects, tags, keywords, cast, directors, runtime, reference overlaps and title links. General similarity supplies the neighborhood; intent selects the supporting evidence emphasis. Dislikes adjust comparable affinities; exclusions hide exact titles. The qualities_applied field identifies whether mood text affected ranking. Provider filters apply in the requested country; country alone does not filter availability. No account required.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"$defs": {
"Constraints": {
"type": "object",
"title": "Constraints",
"properties": {
"kind": {
"enum": [
"any",
"movie",
"show"
],
"type": "string",
"title": "Kind",
"default": "any"
},
"genres": {
"type": "array",
"items": {
"type": "string"
},
"title": "Genres",
"maxItems": 5
},
"country": {
"type": "string",
"title": "Country",
"default": "US",
"pattern": "^[A-Z]{2}$",
"description": "Two-letter availability country, such as US or GB. Use known location; US is the default. Does not establish availability unless providers are also supplied."
},
"variety": {
"type": "boolean",
"title": "Variety",
"default": false
},
"year_to": {
"anyOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1870
},
{
"type": "null"
}
],
"title": "Year To",
"default": null,
"description": "Latest original release year."
},
"languages": {
"type": "array",
"items": {
"type": "string"
},
"title": "Languages",
"maxItems": 5
},
"providers": {
"type": "array",
"items": {
"type": "string"
},
"title": "Providers",
"maxItems": 5,
"description": "Streaming providers to require. Country and offer_types filter availability only when providers are supplied."
},
"year_from": {
"anyOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1870
},
{
"type": "null"
}
],
"title": "Year From",
"default": null,
"description": "Earliest original release year. A series uses its first-release year, not the year of a returning season or addition to a service."
},
"exclude_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Exclude Ids",
"maxItems": 100,
"description": "Resolved titles to leave out, including a viewer's 'seen it' reaction. Keep earlier constraints when refining. For disliked-title affinities, use avoid_seed_ids on recommend_titles or recommend_for_me instead."
},
"offer_types": {
"type": "array",
"items": {
"enum": [
"subscription",
"free",
"ads",
"rent",
"buy"
],
"type": "string"
},
"title": "Offer Types"
},
"max_movie_minutes": {
"anyOf": [
{
"type": "integer",
"maximum": 600,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Movie Minutes",
"default": null,
"description": "Maximum film runtime in minutes. Does not restrict series; set kind=movie for a movie-only request."
},
"max_episode_minutes": {
"anyOf": [
{
"type": "integer",
"maximum": 600,
"minimum": 1
},
{
"type": "null"
}
],
"title": "Max Episode Minutes",
"default": null,
"description": "Maximum runtime per episode in minutes. Does not describe a whole season or restrict films."
}
},
"additionalProperties": false
}
},
"title": "recommend_titlesArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "RecommendRequest",
"properties": {
"limit": {
"type": "integer",
"title": "Limit",
"default": 12,
"maximum": 12,
"minimum": 1,
"description": "Candidate shortlist size for the assistant to choose from, not the number to show the viewer. Usually retrieve twelve and present two or three fitting choices."
},
"intent": {
"enum": [
"watched",
"loved",
"into"
],
"type": "string",
"title": "Intent",
"default": "loved",
"description": "Evidence emphasis: watched for viewing, loved for ratings, into for topics and mood references. The general title neighborhood is shared. This field does not establish viewer history; qualities express the experience wanted."
},
"seed_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Seed Ids",
"maxItems": 3,
"description": "Resolved positive reference titles. These can be viewer likes or assistant-chosen examples of a requested mood. A reference alone does not establish that the viewer watched or liked it."
},
"qualities": {
"type": "string",
"title": "Qualities",
"default": "",
"maxLength": 300,
"description": "The experience wanted now: mood, tone, pace, themes and qualities to avoid, in natural language. Preserve refinements such as absorbing but not draining or more playful. This request does not change saved taste."
},
"constraints": {
"$ref": "#/$defs/Constraints"
},
"avoid_seed_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Avoid Seed Ids",
"maxItems": 3,
"description": "Titles the viewer disliked. Reduces candidates closer to these than to the positive references. This differs from exclude_ids, which only hides exact titles. Uses exact versions; a title dislike alone does not specify an unwanted theme."
}
},
"additionalProperties": false
}
}
}Record a brief quality report about a meaningful acceptance, rejection, correction or concrete problem with ReelRecs results, when permitted by the viewer and host. At most one report per new signal across ReelRecs tools. Accepts the relevant result request_id and up to five affected title IDs copied from results when available; otherwise omit them. IDs must not be invented. The paraphrase is limited to 300 characters. User statements, actions and uncertain assistant inferences are separate evidence types; inference confidence must be low or medium. Silence or continued use is not evidence of a reaction. Transcripts, identity, credentials and sensitive personal details are outside the report's scope. Reports are unverified observations and cannot change saved ratings or taste. Returns receipt acknowledgement; host approval controls and viewer opt-out apply.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"title": "report_recommendation_feedbackArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "FeedbackRequest",
"required": [
"reaction",
"evidence",
"confidence",
"category",
"summary"
],
"properties": {
"summary": {
"type": "string",
"title": "Summary",
"maxLength": 300,
"minLength": 1,
"description": "Brief paraphrase about an observable reaction to ReelRecs only. No transcript, names, contact details, credentials or sensitive personal information. Do not report based only on silence or continued use."
},
"category": {
"enum": [
"recommendation_reaction",
"title_correction",
"constraint_missed",
"availability_problem",
"link_problem",
"tool_problem",
"other"
],
"type": "string",
"title": "Category"
},
"evidence": {
"enum": [
"user_statement",
"user_action",
"assistant_inference"
],
"type": "string",
"title": "Evidence"
},
"reaction": {
"enum": [
"positive",
"negative",
"mixed",
"unclear"
],
"type": "string",
"title": "Reaction"
},
"title_ids": {
"type": "array",
"items": {
"type": "string",
"pattern": "^tt\\d{5,12}$"
},
"title": "Title Ids",
"maxItems": 5
},
"confidence": {
"enum": [
"low",
"medium",
"high"
],
"type": "string",
"title": "Confidence"
},
"reference_request_id": {
"anyOf": [
{
"type": "string",
"format": "uuid"
},
{
"type": "null"
}
],
"title": "Reference Request Id",
"default": null,
"description": "Copy request_id when the relevant ReelRecs result provides one. Leave empty for failures without an ID; never invent one. It grants no access to the result."
}
},
"additionalProperties": false
}
}
}Find a movie or TV show from its name, a remembered fragment or a typo. Resolve its exact version before recommendations or availability checks. Returns canonical IDs and rich title context: description, genres, subgenres, tags, subjects, keywords, cast, directors, language and runtime. Choices cover viewer-mentioned titles or assistant-chosen mood references.
| Argument | Type | Description |
|---|---|---|
| request* | object |
{
"type": "object",
"title": "search_titlesArguments",
"required": [
"request"
],
"properties": {
"request": {
"type": "object",
"title": "SearchRequest",
"required": [
"query"
],
"properties": {
"kind": {
"enum": [
"any",
"movie",
"show"
],
"type": "string",
"title": "Kind",
"default": "any"
},
"year": {
"anyOf": [
{
"type": "integer",
"maximum": 2100,
"minimum": 1870
},
{
"type": "null"
}
],
"title": "Year",
"default": null,
"description": "Exact original release year when the viewer specifies a version. For a series, its first-release year, not a season year."
},
"limit": {
"type": "integer",
"title": "Limit",
"default": 5,
"maximum": 10,
"minimum": 1
},
"query": {
"type": "string",
"title": "Query",
"maxLength": 120,
"minLength": 1,
"description": "Movie or show name, including a remembered fragment or typo. Put an explicitly requested release year in year. Returns choices with exact IDs; never guess an ID."
}
},
"additionalProperties": false
}
}
}We read every tool's name, description and inputs the way the model will, looking for instructions hidden from you. A clean result means no warning signs, not a guarantee. Scanned Nov 4, 2026.