iran-vod-mcp
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@iran-vod-mcpIs Iranian Dinner on Filimo or Namava, and how many seasons?"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
iran-vod-mcp: Filimo (فیلیمو) and Namava (نماوا) catalog MCP server for AI agents
iran-vod-mcp is an unofficial, read-only MCP server that gives AI agents the public movie and series catalogs of Filimo and Namava. Its 13 tools search both services, tell you which one carries a title, read synopsis, rating, cast and age rating, list seasons and episodes, look up actors and directors, find similar titles, open curated lists (IMDb top 250, Oscar, kids, coming soon), browse genres and show Namava subscription prices. No API key or account is needed. It works in Claude, Cursor, Copilot and any other MCP client.
For AI agents · Quick start · Tools · FAQ · فارسی
For AI agents
What: unofficial MCP server (model context protocol) for filimo.com and namava.ir, the two big Iranian video-on-demand services: title search, "which service has this title", title details, series seasons and episodes, actor and director filmographies, similar titles, curated lists, new releases, front-page picks, genre browsing, Namava plans.
Install:
uvx iran-vod-mcporclaude mcp add iran-vod -- uvx iran-vod-mcp. Transport: stdio. Needs uv (Python 3.10+).Auth: none. Optional
IRAN_VOD_MCP_PROXY(HTTP proxy URL, or a comma-separated list); system proxy settings are ignored.Access: read-only catalog data. It cannot log in, play video, give stream links or change anything, so no confirmation is needed before calling any tool.
Tools: 13, all prefixed
vod_. Typical sequences:vod_search->vod_title->vod_episodes/vod_related/vod_person;vod_wherefor one title;vod_browse->vod_title;vod_collections->vod_collection.Use when: the user asks if a film or series is on Filimo or Namava, what it is about, who is in it, its rating or age rating, how many seasons or episodes it has, what is new or popular, or what to watch in a genre.
Do not use when: the user wants to watch, download or get stream links, or needs Filimo prices (only Namava plans are public JSON).
Output: compact JSON. Years are Persian-calendar as the sites show them (foreign titles show the Gregorian year). Ratings differ: Filimo stars out of 5 with a vote count and IMDb, Namava like and dislike counts. Text is Persian site content.
Machine-readable:
server.json.
Related MCP server: IMDB MCP Server
Quick start
claude mcp add iran-vod -- uvx iran-vod-mcpOr in any MCP client config:
{ "mcpServers": { "iran-vod": { "command": "uvx", "args": ["iran-vod-mcp"] } } }Both sites answer from Iran directly. Foreign (licensed) titles are only listed to Iranian IP addresses: from abroad you
see the Iranian catalog only. If you need a proxy, set IRAN_VOD_MCP_PROXY=http://host:port.
Tools
Tool | What it does |
| Search Filimo, Namava or both by title; movies and series with a |
| Which of the two services carries a title (exact and similar matches per site) |
| Synopsis, genres, year, rating, age rating, country, cast and director of one title |
| Seasons of a series and the episodes of one season (summary, length, date) |
| Newest titles per service, movies or series |
| What each front page promotes: Filimo rows (popular, box office, genres), Namava hero slider and top list |
| Titles of one genre; Filimo also sorts (rating, IMDb, year, newest added) and filters by country |
| Genre names, aliases, sort and country values |
| An actor or director: bio and the titles they appear in, on Filimo and Namava |
| Titles similar to one title; Filimo also names its featured actors and writers |
| Curated lists you can open: IMDb top 250, festival winners, kids, Oscar, true stories, coming soon |
| The titles of one curated list (Filimo sort and country filters, paging to about 200 titles) |
| Namava subscription plans and prices (Filimo prices are not in its JSON API) |
Example prompts:
"Is Iranian Dinner (شام ایرانی) on Filimo or Namava, and how many seasons?"
"Best-rated Iranian comedy series on Filimo."
"What is new on Namava this week?"
"What has Parsa Pirouzfar acted in on Filimo?" / "What is coming soon to Namava?"
فیلم بینوایان در نماوا هست؟ کارگردانش کیست؟
سریالهای ایرانی با بیشترین امتیاز در فیلیمو کدامند؟
FAQ
Can it play or download videos? No. It lists and describes titles only; no stream or download URLs are fetched.
Why do I see fewer titles from abroad? Both services hide licensed foreign titles from non-Iranian IP addresses.
Why does a Filimo series show only a few actors? Filimo has no cast list. For a movie the names come from its description text; for a series they are the actors Filimo features on the series page (usually two or three).
Is it affiliated with Filimo or Namava? No. It reads the same public JSON the websites use, at a polite rate with a short cache.
فارسی
iran-vod-mcp یک سرور MCP غیررسمی و فقطخواندنی برای فهرست فیلم و سریال فیلیمو و نماوا است: جستجوی عنوان در هر دو سرویس،
اینکه یک عنوان در کدام سرویس هست، خلاصه داستان، امتیاز، رده سنی، بازیگران، فصلها و قسمتها، تازهها و دستهبندی ژانر.
پخش، دانلود و ورود به حساب پشتیبانی نمیشود. نصب: uvx iran-vod-mcp
License
MIT. Author: Sepehr Radmard (سپهر رادمرد), github.com/sepehr071, linkedin.com/in/sepehr-radmard.
Available Tools
13 toolsvod_browseBrowse by genreARead-onlyIdempotent
List movies and series of one genre on Filimo and Namava, with Filimo's sort and country filters.
Use for "best comedy series on Filimo", "Iranian dramas", "new documentaries". Filimo rows carry year, rating, IMDb and summary; Namava rows only title, kind and id (use vod_title). Next: vod_title or vod_episodes. For themed lists (IMDb top 250, Oscar, kids, coming soon) use vod_collections instead.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only movies, only series, or all. Namava ignores this and returns both kinds. | all |
| page | No | Page number, 1 = first. Filimo pages reach about 200 titles per filter (5 site pages of 40). | |
| site | No | Which catalog; 'both' (default) returns two lists. | both |
| sort | No | Filimo only: order of the list. Namava always lists newest first. | default |
| genre | Yes | Genre name in Persian or English, e.g. کمدی, comedy, درام, documentary. See vod_genres. | |
| limit | No | How many titles to return. | |
| country | No | Filimo only: producer country filter such as iran, america, turkey, s_korea (list in vod_genres). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover read-only, idempotent, non-destructive and open-world, so the bar is lower; the description still adds real behavioral context by disclosing that Filimo rows carry year, rating, IMDb and summary while Namava rows only carry title, kind and id. It does not discuss rate limits or failure behavior when a genre string is unrecognized, which keeps it short of a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with purpose, then examples, then return-shape differences, then next steps and the exclusion — a sensible priority order with no filler. The telegraphic fragments ("Next: vod_title or vod_episodes") are dense but each clause carries distinct information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 7-parameter browse tool with no output schema, the description covers what rows look like per site and which sibling to use next, which is the information an agent actually needs to sequence calls. Pagination depth and the genre-name list are delegated to the schema and vod_genres, which is reasonable but leaves genre lookup slightly implicit.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so every one of the 7 parameters is already documented in the schema, including that sort and country are Filimo-only and that Namava ignores kind. The description only echoes the Filimo-only nature of sort and country filters, adding no syntax, format or edge-case detail beyond the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource (list movies and series of one genre) plus the two catalogs it covers, and immediately distinguishes itself from vod_title, vod_episodes and vod_collections by name. An agent can tell this apart from the search/browse siblings without opening any schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives quoted example intents ("best comedy series on Filimo", "Iranian dramas", "new documentaries"), names the follow-up calls (vod_title, vod_episodes), and explicitly routes themed lists (IMDb top 250, Oscar, kids, coming soon) to vod_collections instead. That is an explicit when/when-not/alternative mapping.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vod_collectionOpen a collectionARead-onlyIdempotent
Show the titles of one curated list on Filimo or Namava, such as the IMDb top 250 or coming soon.
Use after vod_collections. Filimo lists accept sort and country filters and reach about 200 titles; Namava lists
are fixed (newest or editorial order, upcoming marks titles without a release date). The Filimo key 'kids' opens
the kids home page as several rows. Next: vod_title with a ref.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | A key from vod_collections, e.g. 'filimo:imdbtop250', 'filimo:animated_under_15/under_6', 'namava:popular', 'namava:coming_soon', 'namava:post:1437' or 'namava:category:persian'. | |
| kind | No | Only movies, only series, or all. | all |
| page | No | Page number, 1 = first. | |
| sort | No | Filimo only: order of the list (not for the kids age keys). | default |
| limit | No | How many titles to return. | |
| country | No | Filimo only: producer country filter such as iran, turkey (see vod_genres). |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations only declare it is a safe, idempotent read. The description adds real behavioral context: Filimo lists reach ~200 titles and accept sort/country, Namava lists are fixed in newest or editorial order, 'upcoming' marks undated titles, and the 'kids' key expands into multiple rows rather than a single list.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose, then sequencing, then provider-specific caveats — no filler. The middle sentence is dense and packs several unrelated facts (titles reach, ordering, upcoming flag, kids key) but each earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a six-parameter read tool with no output schema, the description covers what comes back (titles plus refs usable by vod_title) and the provider-specific quirks an agent would otherwise discover by trial. Pagination limits and the exact return shape stay implicit, which is the only shortfall.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 still adds meaning beyond it by tying sort/country to Filimo only and noting sort does not apply to the kids age keys, plus the ~200-title reach that informs paging. It does not restate kind/page/limit, which the schema already covers.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a concrete verb and resource ('Show the titles of one curated list on Filimo or Namava') with an example list, and implicitly contrasts with vod_collections, which supplies the key. An agent can distinguish it from vod_search/vod_browse without reading the schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit pipeline: use after vod_collections, then vod_title with a returned ref. It also clarifies which sub-features apply where (sort/country only on Filimo). It stops short of saying when NOT to use it versus vod_browse or vod_featured, so not a 5.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vod_collectionsList collectionsARead-onlyIdempotent
List the curated lists vod_collection can open on Filimo and Namava: IMDb top 250, Oscar, kids, coming soon and more.
Use when the user asks for a themed list (best-of, festival winners, kids, Korean or Turkish series, true stories).
Each entry has a key to pass to vod_collection. Namava category groups (any slug from vod_genres) also work as
namava:category:<slug>.
| Name | Required | Description | Default |
|---|---|---|---|
| site | No | Which catalog; 'both' (default) lists both. | both |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, open-world, non-destructive behavior, so the safety profile is covered. The description adds genuine workflow context beyond that: entries carry a `key` consumed by vod_collection, and any vod_genres slug works as `namava:category:<slug>`. It doesn't say anything about result size or pagination, but for a read-only listing tool with full annotations the bar is low.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded with examples, followed by the use trigger and the chaining detail. Three short lines with no filler, though the trailing `namava:category:<slug>` sentence packs a second concept into what reads like a parenthetical aside.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter read-only listing with no output schema, the description covers what the tool returns at a high level (entries with a `key`) and how to use it. It leaves the entry shape otherwise unspecified and says nothing about ordering or result volume, which are minor given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With a single parameter at 100% schema description coverage and an enum, the schema fully documents `site`. The description only echoes the two site names and adds no detail on default or how 'both' results are distinguished. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
"List the curated lists vod_collection can open on Filimo and Namava" gives a specific verb, resource, and scope, and explicitly ties itself to the sibling vod_collection. The concrete examples (IMDb top 250, Oscar, kids, coming soon) remove any ambiguity about what a "collection" is here.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use when the user asks for a themed list (best-of, festival winners, kids, Korean or Turkish series, true stories)" is a clear use trigger, and it names the follow-up tool (vod_collection) that consumes the returned key. It stops short of explicit exclusions – it never says to prefer vod_genres or vod_search for non-themed queries, and the namava:category note blurs the line with vod_genres.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vod_episodesSeries seasons and episodesARead-onlyIdempotent
List the seasons of a series and the episodes of one season (title, summary, length, publish date).
Use after vod_search or vod_title when the user wants episodes, how many seasons exist or the newest episode. Takes a series ref; a movie ref returns an error. Default season is the latest. Streaming links are not provided.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Title ref from vod_search, vod_new, vod_browse or vod_featured, e.g. 'filimo:0bd4p', 'filimo:150570' or 'namava:series:2377'. | |
| limit | No | Max episodes to return. | |
| season | No | Season number (1 = first). Default: the latest season. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavioral facts beyond that: a movie ref produces an error rather than an empty result, the default season is the latest, and streaming links are deliberately omitted from the output.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two tight paragraphs with the purpose front-loaded and the operational caveats second. Minor duplication of the 'default season is the latest' fact already present in the season schema description keeps it from being fully waste-free.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work of naming the returned fields and flagging that streaming links are absent. Pagination semantics for limit (e.g., whether more episodes exist beyond the cap) are the one notable remaining gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so ref, limit and season are already fully documented, including that the season default is the latest. The description's only added meaning is the series-vs-movie ref constraint, which is a useful but small increment over the schema's pattern and descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('List the seasons of a series and the episodes of one season') and even enumerates the returned fields (title, summary, length, publish date). It is clearly distinguishable from vod_search and vod_title, which are named as the upstream discovery tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives explicit triggers ('when the user wants episodes, how many seasons exist or the newest episode') and explicit sequencing ('Use after vod_search or vod_title'), plus a when-not condition: a movie ref returns an error. This is close to complete routing guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vod_featuredFront-page picksARead-onlyIdempotent
Show what Filimo and Namava promote right now: Filimo's front-page rows (new, popular, box office, genres) and Namava's top slider and top list.
Use for "what is popular / trending on Filimo or Namava". These are editorial picks, not view counts. Take a
ref from here to vod_title for details. For Namava's most-viewed list use vod_collection(key="namava:popular").
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Filimo only: use the Movies page or the Series page rows (the Series page has the popular series row). | all |
| site | No | Which catalog; 'both' (default) returns both. | both |
| per_row | No | Titles per row. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety and idempotency are covered. The description adds genuinely non-obvious behavior: results are editorial/curated rather than metric-driven, and returned refs are designed to be chained into vod_title. It stops short of describing pagination or how many rows come back per site.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, front-loaded with the resource and scope, then the use case, then the routing alternatives. The parenthetical row list is compact and informative rather than padding; nothing is redundant with the annotations or schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description does the necessary work of sketching the return shape (per-site rows, slider, list) and the ref-chaining path onward, and all three params are covered by schema descriptions. It could be slightly more complete about row counts or what 'both' returns in terms of volume, but nothing essential for a correct call is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the enum meanings for kind and site and the per_row bounds are already fully documented. The description only indirectly reinforces parameter behavior by describing which rows exist per site, which adds little beyond the schema text. Baseline 3 applies when the schema carries the semantic load.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Names a specific verb+resource ('Show what Filimo and Namava promote right now') and enumerates the exact surfaces returned (Filimo front-page rows: new, popular, box office, genres; Namava top slider and top list). It also explicitly distinguishes the content type — 'editorial picks, not view counts' — which separates it from sibling tools like vod_search or vod_collection.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit use case ('what is popular / trending on Filimo or Namava') plus two named alternatives with conditions: vod_title for details from a ref, and vod_collection(key="namava:popular") for Namava's most-viewed list. That is close to textbook when/when-not routing, with only a mild unaddressed overlap with the vod_new sibling for the 'new' row.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vod_genresList genresARead-onlyIdempotent
List the genre names vod_browse accepts for Filimo and Namava, with the English aliases.
Use before vod_browse when unsure of a genre name. Persian names work for both sites; English aliases such as comedy or drama work too. Filimo also takes sort and country filters (see vod_browse).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, non-destructive, so the safety profile is covered. The description adds genuinely new behavioral context: the list is cross-site (Filimo and Namava), Persian names are portable across both, and Filimo-specific filters (sort, country) live in vod_browse rather than here. It stops short of describing the return shape or ordering, which keeps it below a 5.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with what the tool returns, then when to call it, then the accepted name forms. The parenthetical cross-reference to vod_browse earns its place and nothing is repeated from the annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter lookup tool with no output schema, the description covers everything an agent needs: what is returned (genre names plus aliases), which sites are covered, and how to consume the result. No missing prerequisite or return-format gap remains.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The tool takes zero parameters, so the baseline is 4 and there is nothing for the description to disambiguate. It does usefully note that site-specific filtering belongs to vod_browse, implicitly clarifying that no filtering arguments exist here.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ("List the genre names") and immediately scopes it to what vod_browse accepts for Filimo and Namava, including English aliases. An agent can distinguish this reference-list tool from vod_browse without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
"Use before vod_browse when unsure of a genre name" gives an explicit trigger condition and names the sibling tool it feeds. It also resolves the main ambiguity up front by stating that both Persian names and English aliases (comedy, drama) are accepted, so the agent knows what to do with the output.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vod_newNew releasesARead-onlyIdempotent
List the newest titles added to Filimo and Namava, most recent first.
Use for "what is new on Filimo/Namava". Filimo lists include year, rating and summary; Namava lists only title and kind (call vod_title for more). Use vod_featured for what each site promotes on its front page instead.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only movies, only series, or all. | all |
| site | No | Which catalog; 'both' (default) returns two lists. | both |
| limit | No | How many titles to return. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive) and open-world reach. The description adds behavior annotations cannot express: payload asymmetry between sources, with Filimo returning year, rating and summary while Namava returns only title and kind. It stops short of stating pagination or ordering guarantees for merged results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, front-loaded with the core action and ordering, then usage triggers, then alternatives. No filler and nothing repeated from the schema.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema exists, so the description must carry return-value information, and it does by differentiating Filimo and Namava payloads and pointing to vod_title for the missing fields. Combined with usage routing and annotation-covered safety, an agent has enough to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and all three parameters are documented with enums and defaults, so the baseline is 3. The description earns an extra point by explaining that the site parameter changes the shape of results (two lists under 'both', thinner Namava payload), which is semantics the schema does not convey.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific action (list newest titles added) against named resources (Filimo and Namava) with an explicit ordering rule (most recent first). This is clearly distinct from vod_featured and vod_search without needing to open either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives a concrete trigger phrase ("what is new on Filimo/Namava") and explicitly routes two alternative intents elsewhere: vod_title for fuller details and vod_featured for front-page promotions. Both when-to-use and when-not-to-use are present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vod_personActor or director profileARead-onlyIdempotent
Look up an actor, director or writer on Filimo and Namava: short bio and the titles they appear in.
Use for "what has X acted in / directed on Filimo or Namava". Titles carry a ref for vod_title. Filimo gives
birth date and place when it has them; Namava gives a bio text. A name matches the first search hit (exact name
first); other_matches lists further people with similar names. Series appear once, not per episode.
| Name | Required | Description | Default |
|---|---|---|---|
| name | Yes | Person's name in Persian (Filimo also takes the Latin name), e.g. پارسا پیروزفر; or a 'namava:person:<id>' ref from vod_title. | |
| site | No | Which catalog; 'both' (default) looks on Filimo and Namava. | both |
| limit | No | Max titles per site. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive, open-world), and the description adds substantial non-obvious behavior: Filimo returns birth date/place while Namava returns bio text, the name matches the first search hit with exact matches preferred, `other_matches` holds near-name people, and series are deduplicated rather than listed per episode. These quirks materially change how an agent should interpret and present results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Purpose is front-loaded in the first clause, and later sentences are dense with useful specifics rather than filler. Slightly compressed phrasing ('Titles carry a `ref` for vod_title') asks the reader to infer the relationship, but nothing is wasted.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description still tells the agent what comes back (bio, birth data per site, title list, `ref`, `other_matches`, deduplicated series) and how input names resolve. For a 3-parameter read tool, nothing needed to call or interpret it is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% so the baseline is 3, but the description goes further by explaining how `name` resolution works (first hit, exact name first, similar names surfaced via `other_matches`). It leaves `limit` semantics to the schema ('Max titles per site'), which is adequate but keeps it from a 5.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Look up an actor, director or writer on Filimo and Namava') plus the payload ('short bio and the titles they appear in'). It also separates itself from vod_title by noting that returned titles carry a `ref` for that tool, so an agent can route correctly without opening sibling schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger phrase: use for "what has X acted in / directed on Filimo or Namava". It does not spell out when to prefer vod_search or vod_where instead (e.g., for unknown names or browsing-only queries), so guidance is clear but not exhaustive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vod_plansSubscription plansARead-onlyIdempotent
Show Namava's public subscription plans and prices (Filimo's prices are not available in its JSON API).
Use for "how much is a Namava subscription". Prices are in toman before 10% VAT. price is the list price,
price_new_user the discounted price shown to new users (what a guest sees); auto_renew is the monthly plan that
renews itself. Filimo shows its prices only in its payment page (https://www.filimo.com/payment).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already cover safety (readOnly, idempotent, non-destructive), so the description focuses on what annotations cannot express: prices are pre-VAT toman amounts, and the distinction between list price, new-user price, and the auto-renewing monthly plan. It also discloses a real data-provenance limitation (Filimo pricing absent from the JSON API), which prevents a wasteful call.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the purpose and the usage trigger, with field definitions in a compact second block. The only waste is the Filimo caveat appearing twice — once as a parenthetical and again at the end with the URL — which could have been a single statement.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a no-parameter, read-only lookup with no output schema, the description covers everything an agent needs: when to call it, what the returned fields mean, currency/tax basis, and the one case where data is unavailable. Nothing material is left to inference.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero input parameters, so the baseline is 4. The description instead spends its effort defining the returned price fields (price, price_new_user, auto_renew), which is valuable given no output schema exists, though it does not describe ordering of plans or count of plans returned.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Opens with a specific verb+resource ("Show Namava's public subscription plans and prices") and immediately delimits scope with the parenthetical that Filimo prices are not in its JSON API. An agent can distinguish this from sibling tools like vod_title or vod_search without opening the schema, since none of them concern pricing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger phrase ("Use for 'how much is a Namava subscription'") and simultaneously states when-not/where-else: Filimo prices are only on the payment page, with the URL supplied. The routing decision is fully determined by the description.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vod_searchSearch Filimo and NamavaARead-onlyIdempotent
Search the Filimo and Namava catalogs by title and return matching movies and series with a ref for each.
Use first when the user names a title. Each hit has a ref to pass to vod_title (full details), vod_episodes
(series seasons and episodes). Use vod_where instead to learn which service has one specific title.
Filimo hits include year, rating, genres and a summary; Namava search only returns title, kind and year.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | No | Only movies, only series, or all. | all |
| site | No | Which catalog to search; 'both' (default) searches Filimo and Namava. | both |
| limit | No | Max titles per site. | |
| query | Yes | Title words in Persian (or the Latin title for Filimo), e.g. شام ایرانی. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so safety is covered. The description adds genuinely useful behavior beyond them: every hit carries a `ref` for chaining, and the return shape differs by site (Filimo returns year, rating, genres and summary; Namava returns only title, kind and year). With no output schema, that asymmetry is important context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four short sentences, front-loaded with purpose then routing then return-shape caveat. Nothing is filler, though the final clause packs two site-specific behaviors into one compound sentence that could be split for easier scanning.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a read-only search with a fully documented schema and no output schema, the definition covers purpose, routing, chaining, and per-site return differences. It stops short of stating behavior for zero results or how `limit` interacts with the combined two-site response, which would fully close the loop.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100% with enums on `kind` and `site` and bounds on `limit`, so the schema does the heavy lifting. The description implies the query is matched against titles but adds no format, matching, or limit semantics beyond what the schema already documents. Baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb (search) plus the exact resources (Filimo and Namava catalogs) and the retrieval mode (by title, returning movies and series with a ref). The scope is immediately distinguishable from sibling browse/where tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger ('Use first when the user names a title'), names the alternative for the other case ('Use vod_where instead to learn which service has one specific title'), and routes follow-up steps to vod_title and vod_episodes via the ref. When-to-use, when-not, and alternatives are all present.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vod_titleTitle detailsARead-onlyIdempotent
Get full details of one movie or series on Filimo or Namava: synopsis, genres, year, rating, age rating, cast, director.
Use after vod_search, vod_browse or vod_new with the ref of a hit. For a series, follow with vod_episodes to
list seasons and episodes; vod_related gives similar titles and vod_person a cast member's filmography. Ratings
differ per site: Filimo gives stars out of 5 with a vote count and an IMDb score; Namava gives like and dislike
counts (and an IMDb score for newer titles). Filimo's cast for a movie is the names in its description text; for a
series it is the actors Filimo features (a few main ones). Namava people maps each name to a ref for vod_person.
| Name | Required | Description | Default |
|---|---|---|---|
| ref | Yes | Title ref from vod_search, vod_new, vod_browse or vod_featured, e.g. 'filimo:0bd4p', 'filimo:150570' or 'namava:series:2377'. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds real value on top: rating fields differ per site (Filimo stars/5 with vote count and IMDb vs Namava like/dislike counts) and cast semantics differ (Filimo movie cast is scraped from description text, series cast is a few featured actors). Those are meaningful data-quality caveats an agent should know before reading results.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
It is front-loaded with purpose, then usage chaining, then per-site caveats, with no filler or repeated phrasing. The per-site rating and cast clauses are dense but each carries information an agent cannot get from the schema or annotations.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-ref read tool this is complete: annotations cover mutability and idempotency, the description enumerates the returned fields despite there being no output schema, and it explains how the ref relates to sibling tools. Nothing needed to invoke it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% and the schema description already lists the accepted formats and examples ('filimo:0bd4p', 'namava:series:2377'). The description only reiterates that the value comes from a prior search hit, adding no format or constraint detail beyond the pattern in the schema, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first sentence gives a specific verb and resource ('Get full details of one movie or series on Filimo or Namava') and enumerates the returned fields (synopsis, genres, year, rating, age rating, cast, director). It is unmistakably distinct from vod_episodes, vod_related and vod_person, which are named later as follow-ups.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It states the prerequisite explicitly ('Use after vod_search, vod_browse or vod_new with the `ref` of a hit') and then routes onward ('For a series, follow with vod_episodes', 'vod_related gives similar titles and vod_person a cast member's filmography'). Both what selects this tool and what comes next are spelled out, leaving nothing to inference.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
vod_whereWhere to watch a titleARead-onlyIdempotent
Tell which of Filimo and Namava carries a title, by searching both and matching the title text.
Use for "is X on Filimo or Namava". Returns the matching titles per site (exact title match first, then titles
that contain the words) and available_on. Only the catalogs are checked, not whether a title needs a
subscription; use vod_title for that. Pass vod_search results to vod_title for details.
| Name | Required | Description | Default |
|---|---|---|---|
| year | No | Production year (Persian calendar like 1403, or Gregorian) to tell remakes apart. | |
| title | Yes | Exact or near-exact title in Persian, e.g. شام ایرانی. |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds genuinely new behavior: the match ordering (exact title first, then titles containing the words), the returned keys (per-site matches and available_on), and the catalog-only scope limit. It stops short of describing result limits or what happens when nothing matches.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Front-loaded with the core purpose and the trigger question, then scope limits and handoffs. Tight overall, though the final sentence about passing vod_search results to vod_title is a workflow note rather than information about this tool.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
With no output schema, the description compensates by naming the returned fields and match ordering. For a two-parameter, annotation-covered read tool this is nearly complete; only empty-result or result-count behavior is unstated.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so both parameters are already documented in the schema, including the year's remake-disambiguation purpose. The description adds no further semantics about title format or year handling, so the baseline 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource ('Tell which of Filimo and Namava carries a title') plus the mechanism (searches both catalogs and matches title text). An agent can distinguish it immediately from vod_search (discovery) and vod_title (details), both of which are named.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives an explicit trigger phrase ('is X on Filimo or Namava') and an explicit exclusion: it only checks catalogs, not subscription requirements, and routes that need to vod_title. It also points to vod_search as the upstream step, so the when/when-not/alternative triad is fully covered.
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.
13 tool updates
v0.1.1- First observed
vod_browse - First observed
vod_collection - First observed
vod_collections - First observed
vod_episodes - First observed
vod_featured - First observed
vod_genres - First observed
vod_new - First observed
vod_person - First observed
vod_plans - First observed
vod_related - First observed
vod_search - First observed
vod_title - First observed
vod_where
TDQS
Scored across 13 tools
Most tools have clearly distinct purposes, especially vod_title, vod_episodes, vod_person, vod_related, vod_collections, and vod_plans. The discovery-oriented tools (vod_search, vod_where, vod_new, vod_featured, vod_browse) are closer together, but their descriptions explicitly explain when to use each one, so ambiguity is minor.
All tools use snake_case with a consistent vod_ prefix and stable domain terms such as title, episodes, browse, collections, and plans. The singular/plural pairing vod_collection/vod_collections and adjective-style names like vod_new and vod_featured are predictable and readable.
The server has 13 tools, which is well within the ideal range for a dual-site VOD catalog. Each tool maps to a meaningful workflow: discovery, search, details, episodes, people, related titles, curated collections, and subscription plans.
The surface covers the core catalog lifecycle: new titles, search, availability, full details, episodes, genres, browse, people, related titles, curated lists, and Namava plans. The main limitations are declared gaps around streaming links and Filimo pricing, which are meaningful but not likely to break most catalog-information workflows.
Maintenance
Related MCP Connectors
Movie and series ranking as MCP tools: top titles, search, lookup by IMDb id. Free, no key.
OMDb MCP — IMDB-derived movie / TV / episode data (BYO key)
Pay-per-use tool marketplace for AI agents. Search, price-check, and call APIs via MCP.
Independent directory of agentic AI tools — search, compare & recommend via MCP. Read-only.
Related MCP Servers
- AlicenseNot gradedqualityDmaintenanceProvides integration with The Movie Database (TMDB) API for searching movies, TV shows, and people, accessing detailed information, and discovering popular and trending content. Enables AI assistants to access comprehensive movie and television metadata including ratings, cast, crew, and overviews.66 npm1MIT
- FlicenseNot gradedqualityDmaintenanceEnables LLMs to search movies and people, retrieve movie details, cast lists, and the IMDB Top 250 through JSON-RPC or MCP protocol.-
- AlicenseNot gradedqualityBmaintenanceEnables AI agents to search IMDb titles, retrieve detailed metadata and ratings, list top-rated titles with filters, and browse TV series episodes with per-episode ratings and crew information.420 npm1MIT
- AlicenseAqualityCmaintenanceEnables AI agents to search and explore movies, TV shows, people, trending titles, recommendations, and streaming availability. Supports discovery by genre, year, score, runtime, language, and streaming service with compact, typed outputs.10MIT