Skip to main content
Glama
rollecode

Rollekino MCP server

Official
by rollecode

Rollekino MCP server

Read and write the film archive at rollekino.fi: about 3400 reviewed films, each with a personal 1-10 rating alongside IMDb and Metascore.

Runs on the same host as the site, served at https://www.rollekino.fi/mcp by nginx in front of the Python server on 8600 and its OAuth login on 8602. It is not WordPress and exposes only film tools.

WARNING

Using this server with a paid AI service costs money. Tool definitions and results are billed as input tokens, and an agent can call tools repeatedly on its own. You are responsible for every charge, so set spending limits with your provider. The author accepts no liability for any costs. SeeDISCLAIMER.md.

Tools

Reading: search_films, get_film, list_films, get_stats, list_terms, list_queue, get_connection_status.

Writing: set_rating, write_review, create_film, trash_film, lookup_tmdb.

list_films filters by year, genre, director, actor and rating range, orders by rating, title or date, and paginates.

Related MCP server: TMDB MCP Server

The site side

The film data comes from rollekino/v1, added to the theme in inc/hooks/movies-api.php. Writes go through that namespace rather than /wp/v2/movie, because the theme registers a REST field named meta for the Vue archive which shadows core's meta object.

create_film with a tmdb_id enriches from TMDB and OMDB using the helpers in inc/movie-enrich.php, shared with quick-review.php, so a film created here renders identically to one posted from the quick review page.

Setup

uv venv && uv pip install -e .
export ROLLEKINO_URL=https://www.rollekino.fi
export ROLLEKINO_USER=...              # WordPress user with edit_posts
export ROLLEKINO_APP_PASSWORD=...      # application password

Reads are public; only writes need the credentials.

Available Tools

14 tools
create_filmA
Idempotent

Add a film to the archive, enriched from TMDB.

With tmdb_id the site fetches plot, poster, backdrop, cast, crew, genres, trailer, IMDb and Metascore exactly as the quick review page does. Find the id with lookup_tmdb.

The archive keeps one entry per film. If this one is already there, nothing is created and the existing entry comes back instead: update that with update_film or write_review rather than adding a second.

Args: title: Film title, usually the Finnish release title if it has one. tmdb_id: TMDB id, from lookup_tmdb. Strongly preferred. rating: Rolle's own rating: whole number 1 to 10, 0 for not rated. This is the archive's native scale, so never convert from IMDb or Metascore. If he gives stars out of 5, double them. date: Date shown on the review, YYYY-MM-DD or YYYY-MM-DD HH:MM, Helsinki time. Use the day he watched it, which Trakt history records, not today. content: His review text. Leave empty rather than writing one for him. status: draft or publish. imdb_url: Full IMDb URL, when there is no tmdb_id. year: Release year, when there is no tmdb_id. plot: Finnish synopsis, when there is no tmdb_id. allow_duplicate: Create even if the film exists. Almost never right.

ParametersJSON Schema
NameRequiredDescriptionDefault
dateNo
plotNo
yearNo
titleYes
ratingNo
statusNodraft
contentNo
tmdb_idNo
imdb_urlNo
allow_duplicateNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.9/5.0
Behavior5/5

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

Annotations declare idempotency and non-destructiveness, but the description adds the crucial behavioral detail the annotations only imply: the archive keeps one entry per film and returns the existing entry rather than creating a duplicate. It also discloses what enrichment fetches from TMDB, which no structured field conveys.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loads purpose, enrichment, and the dedup warning before the Args block, so the most important agent-facing facts come first. Slightly redundant in repeating lookup_tmdb twice, but every sentence is functional and earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values needn't be explained, and the description still notes that an existing entry comes back instead. For a 10-param mutation tool with 0% schema coverage, the definition leaves nothing an agent needs missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does so thoroughly for all 10 params: rating scale rules (1-10, 0 unrated, never convert from IMDb, double out of 5), date format with timezone and source, the leave-content-empty rule, status values, and the tmdb_id-vs-imdb_url fallback group.

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

Purpose5/5

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

States a specific verb and resource ('Add a film to the archive') plus the enrichment source (TMDB), which immediately distinguishes it from siblings like update_film and write_review. An agent can tell what this creates without opening the schema.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines5/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Explicitly routes the agent: use lookup_tmdb to find the id, prefer tmdb_id over imdb_url, and use update_film or write_review instead when the film already exists. It even flags that allow_duplicate is 'almost never right', giving clear when-not guidance.

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

find_filmA
Read-onlyIdempotent

Find a film by its IMDb id, including drafts.

The reliable way to check whether a film is already in the archive before adding it, since titles repeat across remakes and translations.

Args: imdb_id: IMDb id such as tt0816692, or a full IMDb URL.

ParametersJSON Schema
NameRequiredDescriptionDefault
imdb_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety and repeat-call profile is covered. The description adds one genuinely useful behavioral fact beyond that: drafts are included in results. It says nothing about auth, missing-film behavior (null vs error), or rate limits.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three sentences, zero waste: capability first, usage rationale second, parameter format third. The Args block restates nothing that isn't useful, and the most decision-relevant information (what it is, when to use it) is front-loaded.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value documentation is not required, and the single required parameter plus its format is explained. What remains thin is the identity boundary against get_film and search_films, which the agent must infer from the 'before adding it' framing.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must carry all parameter meaning, and it does: it specifies the accepted format as an IMDb id ('tt0816692') or a full IMDb URL. That is the key ambiguity an agent would otherwise guess wrong on, though it does not say whether the two forms are normalized identically or if the URL may include query strings.

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

Purpose4/5

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

States a specific verb and resource ('Find a film by its IMDb id') plus a scope qualifier ('including drafts') that no sibling exposes. It implicitly separates itself from title-based lookup like search_films by arguing the ID route is more reliable, but no sibling is named outright, so sibling differentiation is contextual rather than explicit.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Gives a clear when-to-use context: the pre-add deduplication check before create_film, with the rationale (titles repeat across remakes and translations). There is no explicit when-not guidance (e.g., use search_films or list_films when you only have a title), so it stops short of full routing guidance.

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

get_connection_statusA
Read-onlyIdempotent

Report which site this points at and whether writing is possible.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive behavior. The description adds useful context beyond those annotations by clarifying that the tool reports the connected site and write capability, which tells the agent what kind of answer to expect.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The entire description is one efficient sentence with a front-loaded verb and no filler. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only diagnostic tool with rich annotations and an output schema, the description is fully sufficient. An agent can call this tool correctly without additional guidance.

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

Parameters4/5

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

The tool has zero parameters, so there is nothing for the description to clarify. Baseline for zero-parameter tools is 4, and the description correctly avoids inventing unnecessary parameter guidance.

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

Purpose5/5

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

The description uses a specific verb, 'Report', and names the exact resource: the target site and whether writing is possible. It is unambiguous and easily distinguished from sibling tools, none of which are status/diagnostic checks.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context for when this tool is relevant: when an agent needs to know where the connection points and whether writes are allowed. It does not explicitly name alternatives, but no sibling tool competes with this status-check function.

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

get_filmA
Read-onlyIdempotent

Get one film in full: the review, the rating, credits and every field.

Args: id: Film id, from search_films or list_films.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

Annotations already mark this as read-only, idempotent, and non-destructive. The description adds useful behavioral context by promising a complete record including review, rating, and credits, which helps the agent know it will receive full detail rather than a summary.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is compact, front-loaded with the core purpose, and has a clearly separated argument line. Every sentence contributes meaningful guidance without repetition or filler.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a single parameter, clear provenance for the id, and an output schema present, the description covers everything needed to correctly invoke this tool. No return-value explanation is required beyond the promise of full film details.

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

Parameters5/5

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

The schema only defines id as an integer with no description, so the description carries the full burden. It explains that the id is a film id and, crucially, tells the agent where to obtain it (from search_films or list_films), which is essential context the schema lacks.

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

Purpose5/5

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

The description clearly states the tool fetches 'one film in full' and enumerates the contents: review, rating, credits, and every field. This distinguishes it from sibling search/list tools and makes the resource and action immediately clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The argument documentation explicitly tells the agent that the film id comes from search_films or list_films, which implies the intended workflow: search or list first, then fetch full details by id. It does not explicitly state when not to use this tool, but the sequencing guidance is strong.

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

get_statsA
Read-onlyIdempotent

Get archive-wide figures: totals, average rating, the rating spread and films per year.

Use this for questions about the collection rather than one film.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.3/5.0
Behavior3/5

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

Annotations already carry the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=true), so the description's burden is lower. It adds useful context by enumerating which aggregate figures are returned, but doesn't describe behavior beyond that. No contradiction with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Two tight sentences with zero filler. The first sentence front-loads purpose and scope, the second adds usage guidance. Every word earns its place.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter aggregate tool, the description is complete. The output schema covers return values, annotations cover safety and idempotency, and the description covers scope and usage. Nothing an agent needs 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.

Parameters4/5

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

The tool has zero parameters, which sets a baseline of 4. The description adds value beyond the empty schema by explaining what the returned figures actually measure (totals, average rating, rating spread, films per year), giving the agent expectations about the output shape.

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

Purpose5/5

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

The description states a specific verb and resource ('Get archive-wide figures') and enumerates the concrete outputs (totals, average rating, rating spread, films per year). The 'archive-wide' scope clearly distinguishes it from per-film siblings like get_film, list_films, and search_films.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The second sentence gives explicit when-to-use guidance: 'Use this for questions about the collection rather than one film.' This is a clear usage directive with an implied exclusion of per-film tools, though it doesn't name the alternative sibling explicitly.

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

list_filmsA
Read-onlyIdempotent

List films, filtered and ordered.

Args: year: Release year, as the archive records it. genre: Genre name in Finnish, such as Komedia or Draama. director: Director's name. actor: Actor's name. min_rating: Only films Rolle rated at least this, 1 to 10. max_rating: Only films he rated at most this, 1 to 10. unrated: True for films with no rating yet. imdb: IMDb id, to find one specific film. status: publish, draft, or any. orderby: date, title or rating. order: ASC or DESC. page: Which page of results. per_page: Results per page, at most 100.

ParametersJSON Schema
NameRequiredDescriptionDefault
imdbNo
pageNo
yearNo
actorNo
genreNo
orderNoDESC
statusNopublish
orderbyNodate
unratedNo
directorNo
per_pageNo
max_ratingNo
min_ratingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered by structured data. The description adds no behavioral context beyond that - it says nothing about pagination behavior, filter combination rules, or default handling, and an output schema exists to cover returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The one-line summary is front-loaded and the arg list is terse with no filler. It is long only because 13 parameters genuinely need documenting, though indentation of the Args block is slightly wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need not be explained, and the 13 parameters are fully described. The remaining gap is the absence of routing guidance against the four sibling find/search/get tools, which matters given this is a heavily filtered listing endpoint.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does so thoroughly: it documents every one of the 13 parameters, including enum-like values for orderby/order/status, the 1-10 rating bounds, the Finnish-language genre convention, and the per_page cap of 100. This is exactly the compensation needed for an undocumented schema.

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

Purpose4/5

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

States a specific verb and resource ('List films') plus the scope modifier 'filtered and ordered', which is immediately actionable. It does not, however, differentiate itself from the sibling 'search_films' or 'find_film', leaving the agent to guess which listing/finding tool to pick.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance at all: nothing explains when to call list_films versus search_films, find_film, or get_film, nor whether filters combine with AND semantics. The agent must infer usage entirely from the parameter list.

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

list_queueA
Read-onlyIdempotent

List draft films waiting for a review.

These are queued by the Trakt importer after Rolle watches something. Needs an application password.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds genuine value by disclosing that an application password is required and explaining the queue's origin, which goes beyond the structured annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three short, focused sentences. The purpose is front-loaded, the queue origin explains behavior, and the password requirement is essential operational information. No wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a zero-parameter, read-only list tool with an output schema, the description is complete. It covers what is listed, why it exists, and the authentication requirement. Nothing critical is missing.

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

Parameters4/5

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

The tool has zero parameters and schema coverage is 100%, so the description has no parameter semantics to add. Per the baseline for zero-parameter tools, a 4 is appropriate.

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

Purpose5/5

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

The description uses a specific verb ('List') and a specific resource ('draft films waiting for a review'), clearly distinguishing this queue-viewing tool from siblings like list_films or search_films. The additional context about the Trakt importer further anchors what this tool returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context about when this tool is relevant: it lists films queued by the Trakt importer after Rolle watches something. It does not explicitly name alternatives or exclusions, but the context strongly implies when to use it, so it earns a 4 rather than 3.

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

list_termsA
Read-onlyIdempotent

List genres, directors, writers or actors used in the archive.

Args: taxonomy: One of genre, director, writer, actor. search: Narrow to names containing this. limit: How many terms to return.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
searchNo
taxonomyYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint false, covering the safety profile. The description adds the constraint that terms are 'used in the archive' and that search narrows to names 'containing this,' but it does not disclose sorting, pagination, or exact matching behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is compact and well-structured: one opening sentence establishes the tool's purpose, followed by a terse, useful Args list. Every line adds meaning without redundancy.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a simple list tool with a strong annotations profile and an output schema present, the description covers the essential behavior and all parameter semantics. No critical information needed to invoke the tool correctly is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description carries full responsibility, and it succeeds: it enumerates the valid taxonomy values, explains search as a substring filter, and defines limit as the number of terms returned. This is exactly the meaning an agent needs beyond the bare schema.

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

Purpose5/5

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

The description begins with a specific verb and resource: 'List genres, directors, writers or actors used in the archive.' It clearly distinguishes this tool from siblings like list_films and search_films by stating the taxonomy categories it returns.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description provides clear context: use this tool to retrieve taxonomy terms from the archive, with optional search narrowing and limit controls. It does not explicitly name alternatives or exclusion conditions, but the intended use is obvious from the stated purpose.

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

lookup_tmdbA
Read-onlyIdempotent

Search TMDB for a film, to get the tmdb_id that create_film enriches from.

This goes through the site, which holds the TMDB key, so no key is needed here. Needs an application password.

Args: query: Film title to search for.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnly/idempotent/non-destructive behavior, and the description adds valuable operational context: the proxy through the site, the fact that the TMDB key is held server-side, and the application password requirement. No contradictions with annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

Three short sentences plus an Args line carry the entire definition. Purpose is front-loaded, operational notes follow, and no words are wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter lookup with an output schema and rich annotations, the description covers the essential invocation context: what to pass, why, and what auth is needed. It does not mention behavior on no results or multiple matches, but those are minor given the output schema.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does: it explains 'query' means the film title to search for, which is more specific than the schema's bare 'Query' field. For a single parameter this is sufficient.

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

Purpose4/5

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

The description states a specific verb ('Search'), resource ('TMDB'), and targeted outcome ('to get the tmdb_id that create_film enriches from'). It is clear about what the tool does, though it does not explicitly differentiate from the sibling search_films.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives clear context by tying the lookup to create_film and noting that it goes through the site and needs an application password. It stops short of naming alternative tools or exclusion conditions, but the intended use is easy to infer.

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

search_filmsA
Read-onlyIdempotent

Find films by title.

Start here when you know the name. Returns the id needed by get_film.

Args: title: Part of the film's title. limit: How many matches to return.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
titleYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

The annotations already declare readOnly, openWorld, idempotent, and non-destructive behavior. The description adds value beyond that by clarifying partial-title matching ('Part of the film's title') and the tool's role as a provider of ids to get_film. No contradiction with annotations exists.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is compact and well-structured: a one-line purpose, a usage pointer, a result note, and an Args block. Every sentence earns its place, and no information is buried or repeated from the schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

The tool is simple, has an output schema, and its annotations cover safety. The description adds the missing context: when to start, what the title parameter accepts, and how the result connects to get_film. Nothing essential is missing for correct invocation.

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

Parameters5/5

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

With 0% schema description coverage, the description fully compensates by explaining both parameters: title is a partial title match, and limit controls how many matches to return. This adds real semantic meaning beyond the raw schema types and defaults.

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

Purpose5/5

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

The description states a specific verb and resource ('Find films by title') and immediately clarifies the intended entry point ('Start here when you know the name'). It differentiates itself from siblings like list_films and get_film by framing the tool as the id-lookup step before get_film.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

It explicitly tells the agent when to use this tool ('Start here when you know the name') and what to do with the result ('Returns the id needed by get_film'). It does not explicitly state when not to use it or name alternatives like list_films, so it stops short of a 5.

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

set_ratingB
Idempotent

Set Rolle's own rating for a film.

Args: id: Film id. rating: Whole number 1 to 10, or 0 to clear. See create_film for the scale.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
ratingYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations cover readOnly=false, idempotent=true, destructive=false, openWorld=true. Description adds the clearing semantic (rating 0 clears) and the range constraint (1-10), which is meaningful behavioral context beyond the annotations. However it doesn't explain what happens to prior ratings or return behavior, though output schema covers returns.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Front-loaded purpose statement followed by parameter bullets. The 'See create_film for the scale' is a useful routing hint. Args-style formatting is acceptable but slightly verbose for two params.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Given an output schema exists, return values needn't be explained. Both params are described, clearing behavior noted, idempotency in annotations. Missing only explicit sibling routing and scale direction.

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

Parameters4/5

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

Schema coverage is 0%, so the description must carry parameter meaning. It documents both params: id as Film id, rating as a 1-10 whole number with 0 semantics. It even cross-references create_film for scale details. Slight gap: doesn't explain whether 1 or 10 is highest.

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

Purpose4/5

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

States a specific verb+resource: setting a rating for a film. The domain term 'Rolle's own rating' signals user-level rating semantics. Sibling differentiation is weak — it doesn't distinguish from write_review or update_film explicitly.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No explicit when-to-use versus alternatives like update_film or write_review. The reference to create_film for scale is a helpful cross-link but doesn't explain when to choose this tool.

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

trash_filmA
DestructiveIdempotent

Move a film to the trash. It can be restored from the WordPress admin.

Args: id: Film id.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.2/5.0
Behavior4/5

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

Annotations already mark destructiveHint=true and readOnlyHint=false. The description adds meaningful behavioral context beyond those flags by stating the film can be restored from WordPress admin, clarifying that this is not a permanent deletion.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

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

The description is compact, front-loaded with the action, and contains no filler. The one-line argument note is directly useful and does not repeat the entire schema.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a one-parameter mutation with an output schema and rich annotations, the description covers the core operation and reversibility. It does not address edge cases like already-trashed films or nonexistent IDs, but the output schema likely covers the response behavior.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It provides only 'id: Film id,' which is minimal but does clarify that the parameter refers to the film being trashed. For a single integer parameter, this is adequate though thin.

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

Purpose5/5

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

The description uses a specific verb ('Move') and a specific resource ('a film to the trash'), making the operation unambiguous. It is clearly distinct from siblings like create_film, get_film, set_rating, and write_review.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines4/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description clearly conveys when to use the tool: when a film should be moved to the trash. It also adds context that the action is reversible via WordPress admin. It does not explicitly name an alternative, but no sibling tool obviously competes for this operation.

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

update_filmA
Idempotent

Change anything about an existing film. Only the fields given change.

Args: id: Film id. title: New title. date: Date shown on the review. See create_film. rating: Whole number 1 to 10, 0 for not rated. See create_film. status: publish or draft. Publishing a draft keeps its date. tmdb_id: Refresh every metadata field, poster and credits from TMDB. The rating and review text are kept. plot: Finnish synopsis. imdb_url: Full IMDb URL. genre: Replace the genres. Finnish names, as list_terms shows them. director: Replace the directors. writer: Replace the writers. actor: Replace the cast.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
dateNo
plotNo
actorNo
genreNo
titleNo
ratingNo
statusNo
writerNo
tmdb_idNo
directorNo
imdb_urlNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.5/5.0
Behavior5/5

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

Annotations declare the safety profile (readOnlyHint=false, destructiveHint=false, idempotentHint=true, openWorldHint=true), and the description adds behavior they cannot convey: list fields are wholesale replacements ('Replace the genres/directors/writers/cast'), tmdb_id overwrites every metadata field plus poster and credits while preserving rating and review text, and publishing a draft keeps its date. This is exactly the overwrite information an agent needs before mutating.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

The opening sentence is front-loaded and the Args block is the minimum needed given zero schema coverage. A few entries are terse ('Film id.', 'New title.') and the repeated 'See create_film' cross-references add slight redundancy, but nothing wasteful.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness5/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 12-parameter mutation tool with an output schema present (so return values need not be explained), the description covers partial-update semantics, every parameter, enum values, and the side effects of tmdb_id and status changes. Nothing required 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.

Parameters5/5

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

Schema description coverage is 0%, so the description carries the full burden and does so: all 12 parameters are documented, including the status enum values (publish or draft), the rating domain (whole number 1-10, 0 for not rated), imdb_url format (full URL), and the replace-vs-refresh distinction between list fields and tmdb_id.

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

Purpose5/5

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

States a specific verb and resource ('Change anything about an existing film') and immediately scopes it with patch semantics ('Only the fields given change'). It also references create_film as the counterpart tool for field semantics, so an agent can distinguish update from create 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.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The patch constraint ('only the fields given change') gives real usage context and the tmdb_id line implies a refresh workflow, but there is no explicit when-to-use/when-not guidance against siblings that also mutate a film (set_rating, write_review, trash_film). Usage is implied rather than routed.

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

write_reviewA
Idempotent

Put Rolle's review text on a film.

The text is his: pass what he wrote, never compose one for him.

Args: id: Film id. content: The review, as HTML or plain paragraphs. Replaces what is there. rating: Whole number 1 to 10. See create_film. date: Date shown on the review. See create_film. publish: True moves a draft to published.

ParametersJSON Schema
NameRequiredDescriptionDefault
idYes
dateNo
ratingNo
contentYes
publishNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

Description adds real behavioral context beyond annotations: content 'Replaces what is there' (overwrite semantics on an idempotent write) and the authorship constraint that the review text must be the user's, not agent-composed. Annotations already cover safety (readOnly=false, idempotent=true), so this extra guidance is credited. Minor tension between field replacement and destructiveHint=false, but replacement within a record is not the resource-level destruction the hint describes.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

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

Purpose is front-loaded in the first line, followed by the useful authorship directive and a compact Args list. The docstring formatting is slightly verbose but each line adds information; nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

For a 5-parameter mutation tool with annotations covering the safety profile and an output schema covering returns, the description is complete enough to call correctly. The only shortfall is that rating/date semantics point to a sibling tool rather than being self-contained.

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

Parameters4/5

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

With 0% schema description coverage, the description carries the full burden and documents all five parameters: id (film id), content (HTML or plain paragraphs, replaces existing), rating (whole 1-10), date (shown on review), publish (draft->published). It defers exact rating/date formatting to create_film, which is a minor gap but keeps semantics clear.

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

Purpose4/5

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

States a specific verb and resource ('Put Rolle's review text on a film'), which cleanly identifies this as writing a review to an existing film record. It doesn't explicitly contrast with update_film or create_film, so the agent must infer the boundary, but the action itself is unambiguous.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied through parameter hints ('publish: True moves a draft to published', 'See create_film' for rating/date formats), which tells the agent how to invoke it but not when to choose it over update_film or set_rating. No explicit exclusions or alternative routing.

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.

  1. 6 tool updatesv1.1.1
    • Changedcreate_film3 fields changed
      • addedInput schema / properties / allow_duplicate
        Added value: +{
        +  "default": false,
        +  "title": "Allow Duplicate",
        +  "type": "boolean"
        +}
      • addedInput schema / properties / date
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Date"
        +}
      • changedInput schema / properties / rating / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
    • Addedfind_film
    • Changedlist_films2 fields changed
      • addedInput schema / properties / imdb
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Imdb"
        +}
      • addedInput schema / properties / status
        Added value: +{
        +  "default": "publish",
        +  "title": "Status",
        +  "type": "string"
        +}
    • Changedset_rating1 field changed
      • changedInput schema / properties / rating / type
        Previous value: -"number"New value: +"integer"
    • Addedupdate_film
    • Changedwrite_review2 fields changed
      • addedInput schema / properties / date
        Added value: +{
        +  "anyOf": [
        +    {
        +      "type": "string"
        +    },
        +    {
        +      "type": "null"
        +    }
        +  ],
        +  "default": null,
        +  "title": "Date"
        +}
      • changedInput schema / properties / rating / anyOf
        Previous value: -[
        -  {
        -    "type": "number"
        -  },
        -  {
        -    "type": "null"
        -  }
        -]New value: +[
        +  {
        +    "type": "integer"
        +  },
        +  {
        +    "type": "null"
        +  }
        +]
  2. 12 tool updatesv1.0.0
    • First observedcreate_film
    • First observedget_connection_status
    • First observedget_film
    • First observedget_stats
    • First observedlist_films
    • First observedlist_queue
    • First observedlist_terms
    • First observedlookup_tmdb
    • First observedsearch_films
    • First observedset_rating
    • First observedtrash_film
    • First observedwrite_review

TDQS

A4.1/5.0

Scored across 14 tools

Disambiguation4/5

Most tools have clearly distinct purposes keyed to a specific input (id vs IMDb id vs title) and action. There is mild overlap between list_films (which has an imdb filter and free-form filtering) and both search_films and find_film, but the descriptions do a good job steering the agent to the right one.

Naming Consistency5/5

Every tool follows a consistent verb_noun pattern (get_film, list_films, create_film, update_film, trash_film, write_review, set_rating, find_film, lookup_tmdb). No mixed casing or verb styles.

Tool Count5/5

14 tools is well within the sweet spot and each maps to a real operation: reads, CRUD, rating/review, taxonomy listing, stats, queue, TMDB lookup, and a health check. Nothing feels padded.

Completeness4/5

Covers full lifecycle: create/update/trash, get/list/search/find, rating, review, terms, stats, queue, and TMDB enrichment, plus a pre-add duplicate check. The only gap is no in-MCP restore from trash (only via the WordPress admin) and no explicit untrash tool.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers