Skip to main content
Glama
framinosona

BetaSeries MCP Server

by framinosona

BetaSeries MCP Server

An open-source Model Context Protocol server for the BetaSeries API — TV show and movie tracking, planning, ratings, social features, and more. Self-hostable via Docker, or run locally over stdio with any MCP client.

Features

  • 186 BetaSeries operations, grouped into 23 tools (one per API resource category) so an LLM client doesn't choke on tool count — every real endpoint the API exposes is reachable, with none of the noise of one-tool-per-endpoint.

  • Generated straight from BetaSeries' own OpenAPI spec (scripts/generate-tools.ts), so keeping up with API changes is a re-vendor + npm run codegen, not hand-editing 190 parameter lists.

  • Both stdio (local MCP clients) and Streamable HTTP (Docker / remote) transports from the same server.

  • Auth is a one-time npm run auth (OAuth2 device-code flow) — the running server never exposes a "log in" tool to the LLM.

Tool categories

Tool

Operations

Covers

betaseries_shows

34

search, display, tracking, ratings, episodes, seasons, similars, recommendations, videos, tags...

betaseries_members

24

profile, options, notifications, badges, search, signup, sync, locale, avatar/banner...

betaseries_movies

21

search, display, favorites, ratings, discover, upcoming, similars, characters...

betaseries_episodes

17

list, watched, downloaded, hidden, rewatch, notes, next/latest, unrated...

betaseries_comments

11

list, post, delete, replies, reactions, subscriptions...

betaseries_pictures

9

poster/image URLs for shows, movies, episodes, seasons, members, characters, persons, platforms, badges

betaseries_collections

8

manage & subscribe to collections (Premium)

betaseries_seasons

8

watched, hidden, rewatch, notes

betaseries_quiz

7

list, answer, history, rankings

betaseries_friends

6

list, requests, add/remove, block

betaseries_timeline

6

home/friends/member/show feeds, events

betaseries_messages

5

inbox, discussion, send, read

betaseries_polls

5

list, latest, answer, target

betaseries_subtitles

5

episode/season/show subtitles, latest, report

betaseries_platforms

4

list & manage streaming platform subscriptions

betaseries_planning

3

your schedule, general & upcoming planning

betaseries_search

3

unified search across shows/movies

betaseries_tags

3

list & tag shows

betaseries_persons

2

actor/director/crew info & articles

betaseries_reports

2

report content, update a report

betaseries_badges

1

badge details

betaseries_news

1

latest news

betaseries_stats

1

show ranking stats

Each tool takes operation (an enum of that category's operation IDs) and params (a string key/value map for that operation) — the full parameter reference for every operation is in the tool's own MCP description, generated from the spec.

Related MCP server: Trakt MCP Server

⚠️ A note on openapi.json

BetaSeries' published spec (https://developers.betaseries.com/openapi.json) contains 7 extra operations tagged "Model"/discover, /resources, /resources/{id}, /query, /execute, /version, /setCredentials — worded like Model Context Protocol primitives ("Discover MCP server capabilities", "Execute an action through the MCP server", "Set API key... for LLM authentication"). They do not exist on the real API (api.betaseries.com returns a plain Page not found. for all of them, unlike real endpoints), and there's no BetaSeries announcement of an official MCP server. They look like either leftover boilerplate from a spec-generation tool, or bait aimed at AI agents auto-generating MCP servers from this exact file. Either way, this project strips them — see spec/PROVENANCE.md for the full writeup. If BetaSeries ships a real MCP server later, treat this project as a candidate for archival in favor of theirs.

Setup

1. Get a BetaSeries API key

Register an application at BetaSeries to get an API key (and secret, needed for step 3) — see developers.betaseries.com.

2. Install

git clone https://github.com/framinosona/betaseries-mcp.git
cd betaseries-mcp
npm install
cp .env.example .env
# edit .env: set BETASERIES_API_KEY (and BETASERIES_API_SECRET for the next step)

3. Authenticate (one-time)

npm run auth

This runs BetaSeries' OAuth2 device-code flow: it prints a code and a URL, you approve it in your browser, and the resulting access token is saved into .env automatically as BETASERIES_ACCESS_TOKEN.

4. Run

Locally over stdio (default):

npm run build
npm start

Or for development, without a build step:

npm run dev

5. Point an MCP client at it

For Claude Code / Claude Desktop, add to your MCP config:

{
  "mcpServers": {
    "betaseries": {
      "command": "node",
      "args": ["/path/to/betaseries-mcp/dist/index.js"],
      "env": {
        "BETASERIES_API_KEY": "...",
        "BETASERIES_ACCESS_TOKEN": "..."
      }
    }
  }
}

Self-hosting with Docker

cp .env.example .env   # fill in your key/token as above
docker compose up -d

This runs the server in Streamable HTTP mode on http://localhost:3000/mcp (/health for a liveness check). Point any MCP client that supports Streamable HTTP at that URL. To run npm run auth against the containerized build instead of locally, use docker compose run --rm betaseries-mcp npm run auth.

Environment variables

Variable

Required

Default

Notes

BETASERIES_API_KEY

yes

from your BetaSeries API key

BETASERIES_API_SECRET

only for npm run auth

from your BetaSeries API key

BETASERIES_ACCESS_TOKEN

for member-scoped operations

written by npm run auth

BETASERIES_LOCALE

no

fr

matches the API's own default

BETASERIES_API_BASE_URL

no

https://api.betaseries.com

BETASERIES_API_VERSION

no

3.0

MCP_TRANSPORT

no

stdio

stdio or http

PORT

no

3000

HTTP mode only

Development

npm run codegen    # spec/betaseries-openapi.json -> src/generated/operations.ts
npm run typecheck
npm test

To pick up a BetaSeries API change: re-fetch https://developers.betaseries.com/openapi.json, strip any "Model"-tagged operations (see spec/PROVENANCE.md), overwrite spec/betaseries-openapi.json, then npm run codegen.

License

MIT — see LICENSE.md.

Available Tools

23 tools
betaseries_badgesBetaSeries: badgesB

Call the BetaSeries "badges" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • get-badges-badge [GET /badges/badge]: Returns badge details. Params: id (Badge ID. You can add more than one by separating them with a comma.), userId? (ID of the user who earned the badge(s).)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavioral traits. It only states that the tool 'Returns badge details', without mentioning authentication requirements, rate limits, potential errors, or behavior when multiple IDs are passed. The comma-separated ID hint is parameter semantics, not behavioral transparency.

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

Conciseness4/5

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

The description is concise and front-loaded with the API call and operation list. The structure is clear, but the opening sentence 'Call the BetaSeries "badges" API' is somewhat redundant given the tool name, and the 'Pick an operation' phrasing could be more direct. Overall, it avoids unnecessary detail while providing needed operation info.

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

Completeness3/5

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

Given the lack of annotations and output schema, the description should cover more context like return format, error cases, or typical use cases. It does explain the only available operation's parameters, but for a tool with a single operation, it leaves gaps in behavioral expectations and does not fully compensate for the absent structured metadata.

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 schema's 'params' field is a generic object with no specific parameter names, so the description is essential for defining 'id' and 'userId' including optionality (via '?') and the comma-separated multi-value behavior. This adds meaningful value beyond the schema, though it lacks type validation or format details for the user ID.

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 clearly identifies the tool as an API wrapper for BetaSeries badges and lists the specific operation 'get-badges-badge' with its function ('Returns badge details'). This distinguishes it from sibling tools that target other BetaSeries resources (persons, movies, etc.), though the verb 'Call' is generic and the description could be more explicit about the tool's overall purpose.

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?

The description provides no guidance on when to use this tool versus other BetaSeries tools or alternative operations. It simply instructs the user to 'Pick an operation', but does not explain scenarios where badge details are needed or why this tool should be chosen over siblings like betaseries_episodes or betaseries_shows.

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

betaseries_collectionsBetaSeries: collectionsA

Call the BetaSeries "collections" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • delete-collections-collection [DELETE /collections/collection]: Delete a collection from the identified user [Premium feature]. Params: id (ID of the collection)

  • delete-collections-subscribe [DELETE /collections/subscribe]: Delete the subscription for the identified user to a collection. Params: id (ID of the collection)

  • get-collections-collection [GET /collections/collection]: Display collection's data. Params: id (ID of the collection to retrieve.)

  • get-collections-list [GET /collections/list]: Display the list of all collections of the member. Params: user_id? (Member's ID (optional, default identified member))

  • get-collections-subscriptions [GET /collections/subscriptions]: Display the list of all collections subscribed by the member. Params: user_id? (Member's ID (optional, default identified member))

  • post-collections-collection [POST /collections/collection]: Create/Update a collection for the identified user [Premium feature]. Params: id? (ID of the collection to update (Mandatory for updating)), name? (Name of the collection (Mandatory for creation)), description? (Description of the collection (Optional)), private? (Indicates if the collection if private (Optional, possibles values : '1' (for private) or '0' (for public, default value when creation))), items? (List of shows/movies for the collection (Mandatory for creation, Optional for edition. Must be a JSON array with format : [{"type": "show", "id": 123, "note": "Note about series"}, {"type": "movie", "id": 456, "note": null}]))

  • post-collections-notifications [POST /collections/notifications]: Toggle the notifications of the subscription for the identified user to a collection. Params: id (ID of the collection)

  • post-collections-subscribe [POST /collections/subscribe]: Subscribe the identified user to a collection. Params: id (ID of the collection)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A4.1/5.0
Behavior4/5

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

The description discloses important behavioral traits such as premium feature requirements, optional vs. mandatory parameters, and value constraints (e.g., possible values for 'private'). However, it omits authentication requirements, rate limits, and response formats, leaving some behavioral aspects undisclosed.

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

Conciseness4/5

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

The description is lengthy but well-organized as a list of operations, each with a clear format. It avoids redundancy and front-loads the core purpose. A table could improve scannability, but the structure is effective.

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

Completeness3/5

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

All eight operations and their parameters are documented, including premium flags and defaults, which is strong for operation selection. However, the lack of return value descriptions and authentication context leaves gaps, particularly with no output schema and a multi-operation surface.

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's generic 'params' object defers to the description for actual parameter names. The description thoroughly documents every operation's parameters, including optional markers, mandatory conditions, and the exact JSON structure for 'items'. This goes far beyond what the schema provides.

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

Purpose5/5

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

The description clearly states 'Call the BetaSeries collections API' and lists eight specific operations with HTTP verbs, making the tool's purpose unambiguous and distinct from sibling tools focusing on other resources.

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 by the tool's name and the presence of collection-specific operations, but there is no explicit guidance on when to choose this tool over alternatives or any exclusions. The description does not mention sibling tools or alternative approaches.

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

betaseries_commentsBetaSeries: commentsA

Call the BetaSeries "comments" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • delete-comments-comment [DELETE /comments/comment]: Delete a comment from the identified user. Params: id (ID of the comment)

  • delete-comments-subscription [DELETE /comments/subscription]: Unsubscribe the member from email notifications for the given item. Params: type? (Type of item: episode|show|member|movie), id? (ID of the item in question)

  • delete-comments-thumb [DELETE /comments/thumb]: Remove the user's vote for the given comment. Params: id (ID of the comment)

  • get-comments-comment [GET /comments/comment]: Retrieve a given comment. Params: id (ID of the comment)

  • get-comments-comments [GET /comments/comments]: Get comments. Params: type? (Element type: episode|show|member|movie|poll|article), id? (ID of the element in question), nbpp (Number of comments per page), since_id? (ID of the last comment received (Optional)), order? (Chronological return order, desc or asc (Default asc)), replies? (Include replies to comments (1 or 0, default 1))

  • get-comments-replies [GET /comments/replies]: Retrieve the replies of a given comment. Params: id (ID of the comment), order? (Chronological return order, desc or asc (Default asc))

  • get-comments-status [GET /comments/status]: Retrieve the status of comments on the given item (closed or open). Params: type? (Type of item: episode|show|member|movie), id? (ID of the item in question)

  • post-comments-comment [POST /comments/comment]: Create or edit a comment for the specified item. Params: type (Type of item: episode|show|member|movie|event|poll|article (Mandatory for creation, or reference)), id (ID of the item in question (Mandatory for creation, or reference)), reference (Reference ID of the item in question (Mandatory for creation, or type + id)), in_reply_to? (If a reply, inner_id of the corresponding comment (Optional for creation)), text? (Text of the comment), edit_id? (ID of the comment to edit (Mandatory for editing))

  • post-comments-comment-event [POST /comments/comment_event]: Create a comment for an event. Params: type? (Type of the event: film_add|markas.... (Optional if id provided)), element_id? (ID of the element involved in the event (Optional if id provided)), id? (ID of the event to comment on (Optional if type + element_id provided)), text? (Text of the comment)

  • post-comments-subscription [POST /comments/subscription]: Subscribe the member to email notifications for the given item. Params: type? (Type of item: episode|show|member|movie), id? (ID of the item in question)

  • post-comments-thumb [POST /comments/thumb]: Add a vote for the user for the given comment. Params: id (ID of the comment), type (Type of the vote (-1 for a downvote, 1 for an upvote)), switch? (Whether the user switches their existing vote (default false))

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A3.9/5.0
Behavior3/5

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

No annotations are provided, so the description must convey behavior. It includes HTTP methods (GET/POST/DELETE) and verbs in operation names (retrieve, delete, add), which indicate side effects. However, it lacks details on authentication, rate limits, irreversibility of deletions, or error conditions. 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.

Conciseness4/5

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

The description opens with a concise instruction and then presents a logically grouped list of operations. Each line is necessary and follows a consistent format (operation name, HTTP method, path, params). The length is justified by the multi-operation nature, though plain-text formatting could be enhanced with bullet points for readability.

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 11 operations, no annotations, and no output schema, the description covers all operations and parameters comprehensively. It omits return value descriptions and error handling, but the information provided is sufficient for an agent to select and invoke operations correctly. More detail on auth and response formats would improve completeness.

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 description is the definitive source for per-operation parameters, listing each parameter name, optionality (marked with '?'), and a brief semantic explanation (e.g., 'nbpp' = Number of comments per page). This adds significant meaning beyond the generic input schema, which only defines a params object. It falls short of 5 due to missing explicit value types/formats for some parameters.

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 calls the BetaSeries comments API and enumerates all 11 operations with their HTTP methods and paths. This leaves no doubt about the tool's purpose and distinguishes it from sibling tools (e.g., betaseries_movies, betaseries_members) by resource domain.

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 description says 'Pick an operation' and provides operation names, but it does not explain when to use this tool versus sibling tools nor offer criteria for choosing among the 11 operations. Usage is implied from operation names (e.g., 'delete-comments-comment') but not explicitly guided.

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

betaseries_episodesBetaSeries: episodesA

Call the BetaSeries "episodes" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • delete-episodes-downloaded [DELETE /episodes/downloaded]: Remove the downloaded mark. Params: id? (Episode ID (Optional if thetvdb_id provided)), thetvdb_id? (Episode ID on TheTVDB (Optional if id provided))

  • delete-episodes-hidden [DELETE /episodes/hidden]: Remove an episode from the hidden list. Params: id? (Identifier of the episode to remove. Multiple IDs can be separated by a comma)

  • delete-episodes-note [DELETE /episodes/note]: Remove a rating. Params: id? (Episode ID (Optional if thetvdb_id provided)), thetvdb_id? (Episode ID on TheTVDB (Optional if id provided))

  • delete-episodes-rewatch [DELETE /episodes/rewatch]: Unmark an episode as rewatched. Params: id? (Episode ID), all? (Remove all rewatch for the given episode (int 0|1)), date? (Precisely removes the rewatch for the given episode (format Y-m-d H:i:s))

  • delete-episodes-watched [DELETE /episodes/watched]: Unmark an episode as watched. Params: id? (Episode ID (Optional if thetvdb_id provided)), thetvdb_id? (Episode ID on TheTVDB (Optional if id provided))

  • get-episodes-display [GET /episodes/display]: Display information of an episode. Params: id? (Episode ID. Multiple IDs can be specified separated by a comma (Optional if thetvdb_id provided)), thetvdb_id? (Episode ID on TheTVDB. Multiple IDs can be specified separated by a comma (Optional if id provided)), youtube_id? (Episode ID on YouTube. Multiple IDs can be specified separated by a comma (Optional if id provided)), subtitles? (Display subtitles if specified (Optional))

  • get-episodes-latest [GET /episodes/latest]: Retrieve the latest aired episode. Params: id? (Series ID. Multiple IDs can be separated by a comma (Optional if thetvdb_id provided)), thetvdb_id? (Series ID on TheTVDB. Multiple IDs can be separated by a comma (Optional if id provided)), specials? (Include special episodes (default false))

  • get-episodes-list [GET /episodes/list]: Retrieve the list of episodes to watch.. Params: subtitles? (Display episodes with specific subtitles available: all|vovf|vo|vf (Optional)), limit? (Limit to a number of episodes per series (Optional)), showsLimit? (Limit to a number of series (Optional, default 50)), page? (Page number for series pagination (Optional, default 1)), showId? (Series ID (Optional)), showTheTVDBId? (Series ID on TheTVDB (Optional)), showIMDBId? (Series ID on IMDB (Optional)), userId? (Member's ID (Optional, default identified member)), specials? (Include special episodes in the return (Optional, default not returned)), released? (If 1, displays only released episodes, 2 for upcoming, 0 for both (Optional, default 1)), order? (Order of episode appearance, "account" for account order, "smart" for current viewing order (Optional, default account)), since? (Timestamp to mark episodes released after this date (Optional)), excludes? (If specified, removes certain blocks from the return: characters (Optional)), platforms? (List of platform IDs where the episodes must be available (Optional)), with_rewatch? (Indicates if episodes to rewatch appear in the list for premium users (possible values : 0 or 1. Optional, default 0))

  • get-episodes-next [GET /episodes/next]: Retrieve the next episode. Params: id? (Series ID. Multiple IDs can be separated by a comma (Optional if thetvdb_id provided)), thetvdb_id? (Series ID on TheTVDB. Multiple IDs can be separated by a comma (Optional if id provided)), specials? (Include special episodes (default false))

  • get-episodes-scraper [GET /episodes/scraper]: Retrieve episode information. Params: file? (File name to process)

  • get-episodes-search [GET /episodes/search]: Retrieve episode information. Params: show_id? (Series ID for the episode to search), url? (URL of the series to search (Optional)), number? (Episode number, either SxxExx or the global number), subtitles? (If specified, returns subtitles for episodes)

  • get-episodes-unrated [GET /episodes/unrated]: Retrieve the list of watched and unrated episodes. Params: nbpp? (Number of results per page, default 20), page? (Page number, default 1), date? (Time limit, yesterday for episodes watched yesterday, all for all watched episodes (Optional, default yesterday))

  • post-episodes-downloaded [POST /episodes/downloaded]: Mark an episode as downloaded. Params: id? (Episode ID (Optional if thetvdb_id provided)), thetvdb_id? (Episode ID on TheTVDB (Optional if id provided))

  • post-episodes-hidden [POST /episodes/hidden]: Mark an episode as not to watch. Params: id? (Identifier of the episode to mark. Multiple IDs can be separated by a comma)

  • post-episodes-note [POST /episodes/note]: Rate an episode. Params: id? (Episode ID (Optional if thetvdb_id provided)), thetvdb_id? (Episode ID on TheTVDB (Optional if id provided)), note? (Rating from 1 to 5)

  • post-episodes-rewatch [POST /episodes/rewatch]: Mark an episode as rewatched. Params: id? (Episode ID (You can provide several ids separated by a comma)), bulk? (If specified, all previous episodes will also be marked as rewatched (default true))

  • post-episodes-watched [POST /episodes/watched]: Mark an episode as watched. Params: id? (Episode ID (Optional if thetvdb_id provided)), thetvdb_id? (Episode ID on TheTVDB (Optional if id provided)), youtube_id? (Episode ID on YouTube (Optional if id provided)), bulk? (If specified, all previous episodes will also be marked as watched (default true)), delete? (If specified, all subsequent episodes will no longer be marked as watched), note? (If a rating between 1 and 5 is specified, rate the episode)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A3.8/5.0
Behavior3/5

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

There are no annotations, so the description carries the behavioral disclosure burden. It does provide a concise behavioral summary for each operation (e.g., 'Remove a rating', 'Mark an episode as watched'), which is useful. However, it omits deeper context like authentication requirements, idempotency, potential side effects, 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.

Conciseness4/5

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

The description is long (17 operations) but each line is informative and structured consistently (operation, HTTP method, one-line purpose, params). It front-loads the core instruction. No fluff, though the sheer volume could be overwhelming; better formatting (e.g., code blocks) would slightly improve scannability.

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

Completeness4/5

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

Given the lack of an output schema and the broad scope, the description thoroughly covers what each operation does and its parameters. It does not describe return formats or pagination details beyond parameter defaults, but for a meta-tool with many operations, it is reasonably complete.

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 input schema is minimal (only operation and generic params object), but the description compensates fully by listing every parameter for each operation, including whether it's optional, format hints (e.g., Y-m-d H:i:s), and relationships between parameters (e.g., 'Optional if thetvdb_id provided'). This is far beyond the schema's coverage.

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

Purpose5/5

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

The description clearly states it calls the BetaSeries 'episodes' API and lists all available operations with their HTTP methods. It distinguishes itself from sibling tools by focusing specifically on episodes-related actions (e.g., watched, hidden, notes, rewatch).

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?

The description provides no guidance on when to use this tool versus alternative sibling tools (e.g., betaseries_shows, betaseries_seasons). It does not state explicit conditions, prerequisites, or exclusions; it merely lists operations without advising which operation fits a given scenario.

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

betaseries_friendsBetaSeries: friendsA

Call the BetaSeries "friends" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • delete-friends-block [DELETE /friends/block]: Unblocks a user. Params: id? (Member ID to unblock)

  • delete-friends-friend [DELETE /friends/friend]: Removes a friend. Params: id? (Member ID to remove)

  • get-friends-list [GET /friends/list]: Retrieves friends List. Params: id? (Member ID, optional, if not specified uses the identified member. If specified, blocked=false.), blocked? (If specified, returns the list of blocked people), summary? (Returns the last action of friends (Default false)), limit? (Limit on the number of friends to display (optional, default all friends are returned)), page? (Page number, default 1)

  • get-friends-requests [GET /friends/requests]: Retrieves sent requests. Params: received? (If specified, returns the list of received requests)

  • post-friends-block [POST /friends/block]: Blocks a user. Params: id? (Member ID to block)

  • post-friends-friend [POST /friends/friend]: Adds a friend. Params: id? (Member ID to add as a friend)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It provides HTTP methods (GET vs POST/DELETE) that imply side-effect profiles, and it gives specific behavior for get-friends-list (defaults, optional id, blocked/summary flags). However, it omits auth requirements, rate limits, error handling, and response structure, so transparency is moderate.

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

Conciseness4/5

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

The description is well-structured with a clear introductory instruction followed by a line-per-operation list. It is somewhat lengthy due to repeated 'Params:' phrasing, but every included detail serves a purpose and adds practical information. It could be more compact, but is not wasteful.

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

Completeness3/5

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

For a multi-operation tool with no output schema and no annotations, the description covers all operations and parameters but lacks return value details and error behavior. The complexity is high (6 operations), and while the parameter information is thorough, an agent cannot fully anticipate what the API will return or what errors may occur, leaving a notable completeness gap.

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 input schema only defines params as a generic object of string key-value pairs, making the description the sole source of parameter meaning. Each operation lists parameter names, optionality, and semantic purpose (e.g., 'id? (Member ID to unblock)'), adding essential context beyond the schema. This is excellent parameter documentation.

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 identifies this as the BetaSeries 'friends' API and enumerates all supported operations (delete, get, post) with specific resources and actions. It distinguishes itself from sibling tools by focusing exclusively on friends-related endpoints, leaving no ambiguity about what the tool does.

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 description implies usage for friend management operations but does not explicitly state when to use this tool versus alternatives. There is no mention of exclusions or conditions where another BetaSeries tool might be more appropriate, though the 'friends' naming provides some contextual guidance.

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

betaseries_membersBetaSeries: membersA

Call the BetaSeries "members" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • delete-members-avatar [DELETE /members/avatar]: Deletes user avatar. Params: no parameters

  • delete-members-banner [DELETE /members/banner]: Remove the banner. Params: no parameters

  • delete-members-notification [DELETE /members/notification]: Deletes a notification. Params: id? (Notification ID)

  • delete-profile-filters-filter [DELETE /profile-filters/filter]: Deletes filter. Params: type? (Type of media (show or movie))

  • get-members-badges [GET /members/badges]: Displays member badges. Params: id? (Member ID)

  • get-members-email [GET /members/email]: Retrieve the email address. Params: no parameters

  • get-members-infos [GET /members/infos]: Returns member information. Params: id? (Member ID (optional))

  • get-members-is-active [GET /members/is_active]: Checks token activity. Params: no parameters

  • get-members-notifications [GET /members/notifications]: Displays latest notifications. Params: since_id? (Last ID (Optional)), number? (Number of notifications, maximum 100 (Optional, default 10)), sort? (Descending or ascending sort (ASC or DESC, default DESC)), types? (Return only certain types separated by a comma (Optional)), all? (Display all notifications, not just unread ones (Optional, default false)), auto_delete? (Automatic deletion of notifications (Optional, default false)), auto_mark? (Automatic marking of notifications as seen (Optional, default false))

  • get-members-options [GET /members/options]: Retrieves member options. Params: no parameters

  • get-members-search [GET /members/search]: Member search. Params: login? (Username, minimum 2 characters. You can use % as a wildcard.), limit? (Number of results to return. Default 10.)

  • get-members-username [GET /members/username]: Returns available usernames. Params: username? (Username)

  • get-members-year [GET /members/year]: Returns yearly member statistics. Params: id? (Member ID (optional)), year? (Year for the statistics calculation)

  • post-members-avatar [POST /members/avatar]: Uploads and replaces user avatar. Params: avatar? (Image to be used for the user's avatar.)

  • post-members-banner [POST /members/banner]: Uploads user banner. Params: avatar? (Image to be used for the user's banner.)

  • post-members-delete [POST /members/delete]: Initiates account deletion process. Params: no parameters

  • post-members-destroy [POST /members/destroy]: Destroys active token. Params: no parameters

  • post-members-email [POST /members/email]: Change the email address. Params: email? (The new email address)

  • post-members-locale [POST /members/locale]: Change the locale. Params: no parameters

  • post-members-lost [POST /members/lost]: Password reset email. Params: find? (Email address or username)

  • post-members-option [POST /members/option]: Modifies user option. Params: name? (Option name (downloaded, global, specials, notation, timelag, friendship, comment_language)), value? (Option value (1 or 0, for friendship: open|requests|friends|nobody, for episodes_tri: name, date, empty, for comment_language: all, site_locale and locale available on Betaseries))

  • post-members-password [POST /members/password]: Change the password. Params: current_password? (The current password of the member), new_password? (The new password for the member), confirmed_password? (The confirmation of the new password for the member)

  • post-members-signup [POST /members/signup]: Creates new member account. Params: login? (Username), password? (MD5 password — Optional: If not provided, it will be generated and sent in the email), email? (Email address)

  • post-members-sync [POST /members/sync]: Searches members among friends. Params: mails[]? (POST array of email addresses to search)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It gives one-line summaries like 'Deletes user avatar' or 'Initiates account deletion process' but does not warn about irreversible actions, authentication requirements, token invalidation, or side effects. The mutating POST/DELETE operations are not flagged as potentially destructive.

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

Conciseness4/5

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

The description is long due to 24 operations, but it is well-structured: a brief instruction, then a clear bullet-like list grouping operations by HTTP method. Each operation line is concise. It could be trimmed by removing redundant phrases like 'Displays' vs 'Returns', but overall it is appropriately sized for the tool's complexity.

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

Completeness3/5

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

Given no output schema or annotations, the description should cover the full operational context. It covers operation names and parameters thoroughly, but omits return value shapes, error conditions, authentication prerequisites, and rate limits. For a tool with potentially destructive actions, this incompleteness is a notable gap.

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 input schema only defines an operation enum and a generic 'params' object, so the description is the sole source of parameter-level semantics. It lists each operation's parameter names with meaningful descriptions (e.g., 'login? (Username, minimum 2 characters. You can use % as a wildcard.)'), fully compensating for the schema's lack of detail.

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 'Call the BetaSeries members API' and enumerates 24 specific operations with HTTP verbs, resources, and brief action statements. This provides a specific verb+resource pairing that distinguishes it from sibling tools like betaseries_persons or betaseries_shows.

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 description implicitly covers usage by listing every operation and its parameters, but it never explicitly states when to prefer this tool over siblings or when not to use it. For example, there is no mention of avoiding destructive operations unless the user has appropriate permissions. Users must infer from the name and operation list that this tool is for member-related actions.

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

betaseries_messagesBetaSeries: messagesA

Call the BetaSeries "messages" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • delete-messages-message [DELETE /messages/message]: Delete a message. Params: id? (ID of the message to delete — if it's the first in a discussion, the whole discussion is deleted)

  • get-messages-discussion [GET /messages/discussion]: Retrieve a discussion. Params: id? (ID of the first message of the discussion)

  • get-messages-inbox [GET /messages/inbox]: Retrieve the member's inbox. Params: page? (Page number, default 1)

  • post-messages-message [POST /messages/message]: Send a message. Params: to? (ID of the recipient member (mandatory if first message)), text? (Text of the message), title? (Title of the message (mandatory if first message)), id? (ID of the first message in the discussion (optional))

  • post-messages-read [POST /messages/read]: Mark a message as read. Params: id? (ID of the message to mark as read)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It discloses HTTP methods (GET/POST/DELETE), endpoint paths, and a notable side effect: deleting the first message in a discussion deletes the entire discussion. It also marks parameters as mandatory/optional, providing beyond-schema behavioral context.

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

Conciseness5/5

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

The description is front-loaded with the tool's purpose, then uses a clean bullet list for each operation. Every line provides essential information—HTTP method, endpoint, and parameters—with no redundant or filler text. The structure makes scanning for the right operation efficient.

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

Completeness4/5

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

Given the tool's complexity (five operations with distinct parameter sets) and the absence of both annotations and an output schema, the description thoroughly covers all invocation details. It omits return value format, but the lack of an output schema makes this a minor gap overall; the core usage information is complete.

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 input schema only has a generic 'params' object with string values and defers to the description for per-operation parameter names. The description compensates by detailing each operation's parameters, their purpose (e.g., 'to: ID of the recipient member (mandatory if first message)'), and optionality, giving full meaning beyond the schema.

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

Purpose5/5

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

The description clearly states it calls the BetaSeries 'messages' API and enumerates five distinct operations with HTTP verbs and endpoints (e.g., 'delete-messages-message [DELETE /messages/message]'). This distinguishes it from sibling tools like betaseries_shows or betaseries_friends, which focus on other domains.

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 instructs the user to pick an operation and pass parameters in the 'params' object, and it lists the specific parameters per operation. While it does not explicitly contrast with sibling tools or state when not to use this tool, the domain-specific operation list makes the usage context clear.

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

betaseries_moviesBetaSeries: moviesA

Call the BetaSeries "movies" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • delete-movies-favorite [DELETE /movies/favorite]: Remove a favorite movie. Params: id? (ID of the movie to remove.)

  • delete-movies-movie [DELETE /movies/movie]: Remove a movie. Params: id? (Movie ID)

  • delete-movies-note [DELETE /movies/note]: Remove a movie rating. Params: id? (Movie ID)

  • delete-movies-rewatch [DELETE /movies/rewatch]: Unmark a movie as rewatched. Params: id? (Movie ID), all? (Remove all rewatch for the given movie (int 0|1)), date? (Precisely removes the rewatch for the given movie (format Y-m-d H:i:s))

  • get-movies-articles [GET /movies/articles]: Display blog articles about the movie. Params: id? (Movie ID)

  • get-movies-characters [GET /movies/characters]: Retrieve the cast of the movie.. Params: id? (Movie ID)

  • get-movies-discover [GET /movies/discover]: Display movies to discover. Params: type? (Type of discovery: popular, upcoming), limit? (Limit on the number of movies to display (optional, default 100, maximum 200)), offset? (Starting number for the movie list (optional, default 0)), includes? (Add some additional blocks to the return: platforms separated by a comma (optional).)

  • get-movies-favorites [GET /movies/favorites]: Retrieve favorite movies. Params: id? (Member ID, optional, if not specified uses the identified member.), start? (Starting number for the movie list (optional, default 0)), limit? (Limit on the number of movies to display (maximum 1000) (optional)), order? (Specify return order: alphabetical, popularity, added, release, svod (optional, default alphabetical)), summary? (Return only essential movie info (Default false)), includes? (If summary = true, add certain additional blocks to the return: user, notes, platforms separated by a comma (optional))

  • get-movies-genres [GET /movies/genres]: Display all available genres. Params: no parameters

  • get-movies-list [GET /movies/list]: Display the list of all movies. Params: start? (Starting number for the movie list (optional, default 0)), limit? (Limit of movies to display (optional, default 100, max 1000)), order? (Specify return order: alphabetical, popularity (optional)), filter? (Display filter (optional, new=only movies not in the account)), platforms? (IDs of platforms where movies are available), country? (Country for platforms)

  • get-movies-member [GET /movies/member]: Display all movies of a member. Params: id? (Member's ID (optional, default identified member)), state? (0 = to watch, 1 = watched, 2 = do not want to watch (default 0)), released? (0 = unreleased movies, 1 = released movies, 2 = all (default 2)), start? (Starting number for the movie list (optional, default 0)), limit? (Limit of movies to display (maximum 1000) (optional)), order? (Specify return order: alphabetical, popularity, added, release, svod (optional, default alphabetical)), summary? (Return only essential movie info (Default false)), tags? (Retrieve movies with tags separated by a comma (optional)), excluded_tags? (Exclude movies with tags separated by a comma (optional)), includes? (If summary = true, add certain additional blocks to the return: user, notes, platforms separated by a comma (optional)), platforms? (List of platform IDs where the movies must be available (Optional)), with_rewatch? (Indicates if movies to rewatch appear in the list (only when state = 0) for premium users (possible values : 0 or 1. Optional, default 0))

  • get-movies-movie [GET /movies/movie]: Show movie details. Params: id? (Movie ID), tmdb_id? (Movie ID on TheMovieDB), imdb_id? (Movie ID on IMDB), includes? (If summary = true, add some additional blocks to the return: user, notes, platforms separated by a comma (optional).)

  • get-movies-random [GET /movies/random]: Display a random movie. Params: nb? (Number of movies to display, default 1)

  • get-movies-scraper [GET /movies/scraper]: Retrieve movie information. Params: file? (File name to process), number? (Number of results to return (default 1))

  • get-movies-search [GET /movies/search]: Search for a movie. Params: title? (Searched title (optional if order=popularity)), order? (Return order (title|popularity), default title), nbpp? (Number of results per page, default 5, maximum 100), page? (Page number, default 1), recent? (Only movies from the last two years (Default false))

  • get-movies-similars [GET /movies/similars]: Retrieve similar movies. Params: id? (Movie ID), details? (Return movie details (Default false))

  • get-movies-upcoming [GET /movies/upcoming]: Display upcoming movies. Params: limit? (Number of movies (Optional, default 25)), order? (Return order: release_date, popularity (Optional, default release_date))

  • post-movies-favorite [POST /movies/favorite]: Add a favorite movie. Params: id? (ID of the movie to add.)

  • post-movies-movie [POST /movies/movie]: Add or update a movie. Params: id? (Movie ID), mail? (Enable email alerts (0 or 1, default 1)), twitter? (Enable Twitter alerts (0 or 1, default 1)), state? (0 = to watch, 1 = watched, 2 = do not want to watch (default 0)), profile? (Display on profile (0 or 1, default 1)), note? (Movie rating (optional, from 1 to 5))

  • post-movies-note [POST /movies/note]: Rate a movie. Params: id? (Movie ID), note? (Rating from 1 to 5)

  • post-movies-rewatch [POST /movies/rewatch]: Mark a movie as rewatched. Params: id? (Movie ID (You can provide several ids separated by a comma))

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden of behavioral disclosure. It does describe each operation's effect (remove, add, retrieve) and some parameter-specific behaviors (defaults, limits, conditional requirements). However, it omits broader behavioral context such as authentication requirements, rate limits, idempotency of mutations, or error handling, leaving some ambiguity.

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

Conciseness4/5

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

The description is long, but the content is dense and structured as a bulleted list of operations with consistent formatting. Given the tool covers 21 operations, the length is justified and each line adds necessary detail. It is front-loaded with the API call instruction and organized for easy scanning.

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

Completeness3/5

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

The description covers all operations and their parameters comprehensively, but lacks overarching context such as authentication, rate limits, response format, or pagination behavior beyond parameter defaults. Without an output schema, the description does not clarify what the API returns, leaving the agent partially informed.

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 input schema only defines a generic 'params' object, so the description is the sole source of parameter meaning. It provides exhaustive per-operation parameter names, optional markers, defaults, maximums, and format hints (e.g., 'Y-m-d H:i:s'), fully compensating for the schema's generic nature.

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

Purpose5/5

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

The description explicitly states 'Call the BetaSeries movies API' and enumerates 21 specific operations with clear verbs (delete, get, post) and resources (favorite, movie, note, etc.). It clearly distinguishes this tool from siblings by focusing exclusively on movie-related endpoints.

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?

The description provides a catalog of operations but gives no guidance on when to prefer this tool over sibling tools like betaseries_shows or betaseries_seasons. It does not mention any alternatives, exclusions, or conditions for choosing this tool over others.

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

betaseries_newsBetaSeries: newsA

Call the BetaSeries "news" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • get-news-last [GET /news/last]: Display the latest news. Params: number? (Number of news, default 10), tailored? (Return news from series followed by the member)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It states the operation displays latest news, implying a read-only action, but it does not disclose return format, pagination, authentication requirements, or potential side effects. This is acceptable for a simple GET request but lacks depth.

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, with a clear call to action and a single operation listed with its parameters. Every sentence contributes to understanding, with no redundant or filler content.

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

Completeness3/5

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

Given the simplicity of the tool (one operation, two parameters) and no output schema, the description covers the essentials. However, it omits details about the response structure, possible error conditions, and any required authentication. It is minimally sufficient but not comprehensive.

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 description adds significant semantic value beyond the generic params object schema by detailing each parameter (number, tailored) with their meaning and defaults. The schema only defines a generic string-keyed object, so the description is essential for correct usage.

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

Purpose5/5

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

The description clearly identifies the tool as the BetaSeries news API and specifies the exact operation (get-news-last) with its endpoint (GET /news/last), making the purpose unambiguous. It distinguishes itself from sibling tools by focusing on news functionality.

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?

The description provides basic usage instructions ('Pick an operation and pass its parameters') but does not explain when to prefer this tool over alternatives like timeline or search, nor when not to use it. No exclusion criteria or alternative guidance is given.

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

betaseries_personsBetaSeries: personsA

Call the BetaSeries "persons" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • get-persons-articles [GET /persons/articles]: Display news articles. Params: id? (Person's ID)

  • get-persons-person [GET /persons/person]: Display details of the actor. Params: id? (Person's ID.), with_user? (Adds the connected user progression to data if set to 1 (Optionnal, default 0).)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the burden. It discloses the HTTP methods (GET) and optional parameter defaults (with_user default 0), implying read-only behavior. However, it does not mention authentication, rate limits, or response format, leaving some transparency gaps.

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

Conciseness4/5

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

The description is well-structured with a clear lead sentence and a bulleted operation list. It is not overly verbose, but the operation list repeats some information that could be seen as slightly redundant with the schema's enum values.

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

Completeness3/5

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

The description covers all operations and parameter details, which is sufficient for basic invocation. However, with no output schema, it does not describe the response structure or error behavior, and it omits any authentication or rate-limit notes. For a simple read-only API this is acceptable but not complete.

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 provides a generic params object, so the description is essential. It explicitly lists each operation's parameters, marks optional ones with '?', and explains their meaning (e.g., 'with_user? Adds the connected user progression...'). This adds significant value beyond the 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?

The description clearly states it calls the BetaSeries persons API and lists specific operations with verbs like 'Display news articles' and 'Display details of the actor.' It distinguishes from siblings by resource name, but does not explicitly compare to alternative tools.

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 description tells the agent to pick an operation and pass params, implying it should be used for persons-related data, but it provides no explicit exclusions or named alternatives. Sibling tools are implicitly differentiated by resource only.

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

betaseries_picturesBetaSeries: picturesA

Call the BetaSeries "pictures" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • get-pictures-badges [GET /pictures/badges]: Return an image of the badge (32x32). Params: id (ID of the badge), level? (Level of the badge (optional if badge is non-tiered))

  • get-pictures-characters [GET /pictures/characters]: Return an image of the character. Params: id (ID of the character), type? (Type show or movie (optional, default show)), width? (Desired width (optional, default 250)), height? (Desired height (optional, default 375))

  • get-pictures-episodes [GET /pictures/episodes]: Return a picture of the episode. Params: id (ID of the episode), width? (Desired width (optional)), height? (Desired height (optional))

  • get-pictures-members [GET /pictures/members]: Return a picture of the member. Params: id (ID of the member), width? (Desired width (optional)), height? (Desired height (optional)), placeholder? (Type of format if no photo is mentioned: jpeg, png, or svg (optional, default jpeg))

  • get-pictures-movies [GET /pictures/movies]: Return an image of the movie. Params: id (ID of the movie), width? (Desired width (optional, default 250)), height? (Desired height (optional, default 375)), language? (Language for the poster (optional, default original))

  • get-pictures-persons [GET /pictures/persons]: Return an image of the person. Params: id (ID of the person), width? (Desired width (optional, default 250)), height? (Desired height (optional, default 375))

  • get-pictures-platforms [GET /pictures/platforms]: Return an image of the SVOD or VOD platform. Params: id (ID of the platform), width? (Desired width (optional, default 100)), height? (Desired height (optional, default 100))

  • get-pictures-seasons [GET /pictures/seasons]: Return an image of the show's season. Params: show_id (ID of the show), season (Season number), width? (Desired width (optional, default 250)), height? (Desired height (optional, default 375))

  • get-pictures-shows [GET /pictures/shows]: Return a picture of the show. Params: id (ID of the show), width? (Desired width (optional)), height? (Desired height (optional)), picked? (Take the image voted on by the community (banner or show, optional))

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A4.4/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses the endpoint paths (e.g., GET /pictures/badges) and notes optionality/defaults, but does not mention authentication requirements, response format (binary image vs. URL), error behavior, or rate limits. For a read-only image-fetching tool, the key behaviors are covered sufficiently, but not richly.

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 well-structured: a brief opening sentence, then each operation on its own line with endpoint and params. Every line conveys necessary information and there is no redundant or filler text. It is long but appropriately sized for a tool with nine distinct operations.

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 no output schema and a generic input schema, the description must provide complete context, and it does. It documents all 9 operations, their endpoints, each parameter, optionality, and defaults. An agent can invoke any operation correctly without additional external knowledge, making this description fully complete for the tool's complexity.

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 a generic 'params' object with string values, so the description is the sole source of parameter meaning. It lists every parameter for each operation, indicates optionality with '?', provides defaults (e.g., width=250, height=375 for characters), and special options like 'placeholder' and 'picked'. This fully compensates for the generic schema.

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

Purpose5/5

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

The description clearly states this tool calls the BetaSeries 'pictures' API, with each operation explicitly listing what image it returns (badge, character, episode, etc.). The verbs 'Return' and 'Get' are specific, and the resource types distinguish this tool from siblings like betaseries_movies or betaseries_people.

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 operational guidance: 'Pick an operation and pass its parameters in the params object.' It enumerates all available operations and their parameters, which tells the agent exactly what to do. It doesn't explicitly state when not to use this tool or name alternatives, but the operation names and resource types make it unambiguous which tool to select.

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

betaseries_planningBetaSeries: planningA

Call the BetaSeries "planning" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • get-planning-general [GET /planning/general]: Display all episodes broadcasted. Params: date? (Origin date (YYYY-MM-DD — Optional, default "now")), before? (Number of days before (Optional, default 8)), after? (Number of days after (Optional, default 8)), type? (Type of episodes to display: "all" or "premieres" (Optional, default "all"))

  • get-planning-incoming [GET /planning/incoming]: Display only the first episode of the upcoming series. Params: no parameters

  • get-planning-member [GET /planning/member]: Display the schedule. Params: id? (Member's ID (Optional if identified)), unseen? (Display only unseen episodes), month? (Display the schedule for the specified month (format YYYY-MM))

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A4.3/5.0
Behavior3/5

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

With no annotations, the description carries the burden of transparency. It discloses the read-only nature via 'Display' for each operation and includes the HTTP method GET, which signals non-mutating behavior. However, it omits authentication requirements, potential errors, or pagination details, leaving significant behavioral gaps.

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 well-structured with a clear introductory line followed by a bulleted list of operations. Each operation is concisely summarized with endpoint, purpose, and parameters, ensuring every sentence carries useful information without unnecessary verbosity.

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

Completeness4/5

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

Given the absence of an output schema and the multi-operation complexity, the description provides substantial context: endpoints, parameter details, and operation purposes. It stops short of covering authentication, response formats, or error handling, which would be valuable for a complete contextual picture.

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 provides a generic 'params' object with no property definitions, so the description is the sole source of parameter meaning. It lists each operation's parameters with names, types, defaults, and explanatory descriptions, fully compensating for the schema's opacity.

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

Purpose5/5

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

The description explicitly states it calls the BetaSeries 'planning' API and lists three specific operations with their endpoints and purposes. This clearly identifies the resource and distinguishes it from sibling tools that handle different domains (e.g., persons, badges, shows).

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 instructs 'Pick an operation' and details each operation's functionality, giving clear context on when to use each. However, it does not explicitly discuss when to choose this tool over siblings, though the unique resource name implies its niche.

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

betaseries_platformsBetaSeries: platformsA

Call the BetaSeries "platforms" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • delete-platforms-service [DELETE /platforms/service]: Remove the service from the user's subscriptions. Params: id? (Service ID)

  • get-platforms-list [GET /platforms/list]: Display the SVOD and VOD platforms available in the country. Params: country? (Country)

  • get-platforms-services [GET /platforms/services]: Display the different services a user can have. Params: id? (Member's ID (Optional if identified)), type? (Type of services (svod, vod, all) Default all)

  • post-platforms-service [POST /platforms/service]: Add the service to the user's subscriptions. Params: id? (Service ID)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the burden of disclosing side effects. It does convey that delete and post operations mutate user subscriptions while get operations are read-only. However, it does not state required authentication, whether parameters like 'id' are mandatory (the '?' suggests optionality but is ambiguous), or error behavior. Thus, some important behavioral context is missing.

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 well-structured with a brief introductory line followed by a concise bulleted list of operations. Each line packs the operation name, endpoint, action, and parameters into a scannable format without unnecessary verbosity. Every sentence serves a purpose.

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?

The tool has four operations and a minimal schema, and the description covers all operations and their parameters comprehensively. It does not explain return values or error handling, but no output schema exists, and the description gives enough information to understand each operation's behavior. The ambiguity about required parameters slightly reduces completeness.

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 input schema only defines 'operation' and a generic 'params' object that points to the tool description for specifics. The description compensates by naming and explaining each parameter for every operation (e.g., country, id, type). This adds meaningful value beyond the schema, though it does not specify data types or explicit requiredness.

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 identifies the tool as accessing the BetaSeries 'platforms' API and enumerates four specific operations with explicit HTTP methods, endpoints, and purposes. This makes the tool's scope unambiguous and differentiates it from sibling tools that target other BetaSeries resources like shows, episodes, or members.

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 description implies when each operation should be used by listing their actions (add, remove, display) but does not explicitly state when to prefer this tool over alternatives or when not to use it. There are no exclusions or alternative tool references, so guidance remains implicit rather than direct.

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

betaseries_pollsBetaSeries: pollsA

Call the BetaSeries "polls" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • get-polls-last [GET /polls/last]: Display the latest active poll. Params: no parameters

  • get-polls-list [GET /polls/list]: Display all polls. Params: nbpp? (Number of results per page, default 10), page? (Page number, default 1), inactive? (Display inactive polls (1 or 0, default 0))

  • get-polls-poll [GET /polls/poll]: Display the details of a poll. Params: id? (Poll ID)

  • get-polls-target [GET /polls/target]: Display the latest active poll. Params: type? (Target type (episode or show)), ref_id? (ID of the episode or series)

  • post-polls-answer [POST /polls/answer]: Send a response to a poll. Params: id? (Poll ID), answer? (Answer number)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It reveals HTTP methods (GET/POST), implying read vs write, but does not disclose side effects, authentication requirements, rate limits, or why two operations appear to have identical descriptions ('get-polls-last' and 'get-polls-target' both state 'Display the latest active poll'). This ambiguity is a transparency gap.

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

Conciseness4/5

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

The description is well-organized as a bulleted list, with each operation on a separate line and front-loaded with the core instruction. It avoids unnecessary prose, though the duplicated description for 'get-polls-last' and 'get-polls-target' is redundant and could be terser.

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

Completeness3/5

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

The description covers all operation names, endpoints, and parameters, which is essential given five operations and no output schema. However, it does not describe return values (only vague 'Display ...' statements), error handling, authentication needs, or pagination behavior, leaving notable gaps for an agent to invoke the tool correctly in varied contexts.

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's 'params' object is generic (string key/value pairs), so the description provides all necessary parameter semantics per operation, including optionality markers ('?'), default values ('nbpp? Number of results per page, default 10'), and acceptable values (e.g., 'type? Target type (episode or show)'). This fully compensates for the schema's lack of specificity.

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

Purpose5/5

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

The description clearly states it calls the BetaSeries 'polls' API and lists five specific operations with HTTP methods and paths (e.g., 'get-polls-last [GET /polls/last]'), making the tool's purpose unmistakable and distinguishing it from sibling tools focused on other resources.

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?

It instructs the agent to 'Pick an operation and pass its parameters in the params object' and lists each operation with its parameters, but it does not provide guidance on when to choose one operation over another (e.g., 'get-polls-last' vs 'get-polls-target' both say 'Display the latest active poll') or mention prerequisites like authentication for write operations.

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

betaseries_quizBetaSeries: quizA

Call the BetaSeries "quiz" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • get-quiz-history [GET /quiz/history]: Return history of quizs answered by connected user. Params: nbpp? (Number of results per page, default 20), page? (Page number, default 1)

  • get-quiz-list [GET /quiz/list]: Return list of quizs. Params: nbpp? (Number of results per page, default 10), page? (Page number, default 1), quiz_lang? (Quizs locale (default: locale displayed))

  • get-quiz-quiz [GET /quiz/quiz]: Return quiz data. Params: id? (ID of the quiz to retrieve)

  • get-quiz-ranking [GET /quiz/ranking]: Return ranking for a given quiz. Params: id? (ID of the quiz), nbpp? (Number of results per page, default 50), page? (Page number, default 1)

  • get-quiz-ranking-global [GET /quiz/ranking_global]: Return global ranking for all quizs. Params: nbpp? (Number of results per page, default 50), page? (Page number, default 1), ranking_lang? (Specific locale for ranking (default: none))

  • get-quiz-ranking-month [GET /quiz/ranking_month]: Return month ranking for all quizs. Params: month? (Month to get ranking (current month by default, format: Y-m)), nbpp? (Number of results per page, default 50), page? (Page number, default 1), ranking_lang? (Specific locale for ranking (default: none))

  • post-quiz-answer [POST /quiz/answer]: Send answers to a quiz for connected user. Params: id? (ID of the quiz), answers? (Answers data of the user, JSON array like : [{question: 1, answer: 3, time: 1230}] (time is in ms))

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A3.9/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'connected user' for some operations but does not explain authentication requirements, rate limits, error handling, or potential side effects of POST operations. The GET vs POST methods are shown, but the consequences and prerequisites are only minimally implied.

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

Conciseness4/5

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

The description is appropriately structured as a bullet list of operations, each with a concise summary and parameter breakdown. It is longer due to the number of operations, but every line adds value and the general instruction is front-loaded. No filler or redundant content exists.

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

Completeness3/5

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

For a tool with no output schema and no annotations, the description covers operation purposes and parameters well. However, it omits return value structures, authentication details beyond 'connected user', and error behaviors. Given the complexity of seven sub-operations, this is a notable gap, though the description is still sufficient for basic 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?

The schema only defines a generic 'params' object without enumerating operation-specific keys. The description compensates thoroughly by listing each operation's parameters, including optionality markers, defaults, and examples (e.g., 'answers? (Answers data of the user, JSON array like : [{question: 1, answer: 3, time: 1230}] (time is in ms))'). This adds crucial semantic detail beyond the schema.

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

Purpose5/5

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

The description clearly states the tool calls the BetaSeries 'quiz' API and lists specific operations like 'get-quiz-history' and 'post-quiz-answer'. This unambiguously identifies the tool's purpose and differentiates it from sibling tools that target other API resources such as polls or statistics.

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 instructs the user to 'Pick an operation and pass its parameters' and provides a list of available operations with their endpoints and purposes. It clearly implies when to use this tool (for quiz-related queries and answer submission) but does not explicitly contrast it with alternative tools or state when not to use it.

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

betaseries_reportsBetaSeries: reportsA

Call the BetaSeries "reports" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • post-reports-report [POST /reports/report]: Create a report for the element. Params: type? (Type of element: character|comment|film|forum|quizz|show|suggest|suggest_film|member (Mandatory)), target_id? (ID of the concerned element (Mandatory)), reason? (Reason for the report (Optional)), source? (Source of the report: web, app, api... (Optional))

  • post-reports-update [POST /reports/update]: Request an update for the element. Params: type? (Type of element: movie|show (Mandatory)), id? (ID of the concerned element (Mandatory))

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A4/5.0
Behavior2/5

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

No annotations are present, so the description must disclose behavioral traits. It states that operations create a report or request an update, but it does not mention side effects, authentication requirements, or rate limits. For mutation actions, this lack of transparency is a significant gap.

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

Conciseness4/5

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

The description is well-structured with a clear list of operations and their parameters. It is moderately sized but every section serves a purpose, though it could be slightly more compact without losing information.

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?

The description covers both operations and all their parameters, which is sufficient for invoking the tool. However, it lacks details about authentication, error handling, or return values, which would be helpful given no output schema or annotations. Overall, it is largely complete for its intended use.

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 input schema only defines generic 'operation' and 'params' objects, but the description enumerates each operation's parameters, including types, mandatory/optional status, and meaning. This adds crucial meaning beyond the schema and is essential for correct invocation.

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

Purpose5/5

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

The description clearly states it calls the BetaSeries 'reports' API and lists two specific operations with endpoints, making it evident what the tool does. It distinguishes from sibling tools by focusing solely on reports, not other BetaSeries resources.

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 instructs the user to 'Pick an operation' and pass parameters, providing a clear context for using the tool. It does not explicitly mention alternatives or exclusions, but the operation list defines when to use it, which is sufficient for a resource-specific tool.

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

betaseries_seasonsBetaSeries: seasonsA

Call the BetaSeries "seasons" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • delete-seasons-hide [DELETE /seasons/hide]: Remove all episodes of a season from hidden. Params: id? (Series ID (Optional if thetvdb_id specified)), thetvdb_id? (Series ID on TheTVDB (Optional if id specified)), season? (Season number)

  • delete-seasons-note [DELETE /seasons/note]: Remove a rating from a season. Params: id? (Series ID (Optional if thetvdb_id specified)), thetvdb_id? (Series ID on TheTVDB (Optional if id specified)), season? (Season of the series to rate)

  • delete-seasons-rewatch [DELETE /seasons/rewatch]: Remove all episodes of a season from rewatched. Params: id? (Series ID), season? (Season number), all? (Remove all rewatch for the given season (int 0|1))

  • delete-seasons-watched [DELETE /seasons/watched]: Remove all episodes of a season from watched. Params: id? (Series ID (Optional if thetvdb_id specified)), thetvdb_id? (Series ID on TheTVDB (Optional if id specified)), season? (Season number)

  • post-seasons-hide [POST /seasons/hide]: Mark all episodes of a season as hidden. Params: id? (Series ID (Optional if thetvdb_id specified)), thetvdb_id? (Series ID on TheTVDB (Optional if id specified)), season? (Season number)

  • post-seasons-note [POST /seasons/note]: Rate a season. Params: id? (Series ID (Optional if thetvdb_id specified)), thetvdb_id? (Series ID on TheTVDB (Optional if id specified)), season? (Season of the series to rate), note? (Rating assigned from 1 to 5)

  • post-seasons-rewatch [POST /seasons/rewatch]: Mark all episodes of a season as rewatched. Params: id? (Series ID), season? (Season number)

  • post-seasons-watched [POST /seasons/watched]: Mark all episodes of a season as watched. Params: id? (Series ID (Optional if thetvdb_id specified)), thetvdb_id? (Series ID on TheTVDB (Optional if id specified)), season? (Season number), note? (Rating assigned from 1 to 5 (Optional))

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. Each operation's effect is explicitly stated (e.g., 'Remove all episodes of a season from hidden'), and parameter optionality conditions are noted. However, it does not disclose auth requirements, error behavior, response format, or reversibility beyond the immediate action.

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

Conciseness4/5

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

The description is lengthy but well-structured as a clear list of operations with their purposes and parameters. It is front-loaded with the main instruction, and while parameter descriptions repeat, each entry is necessary for the multi-operation tool.

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?

The tool is complex with 8 operations and multiple parameters, and no annotations or output schema. The description comprehensively covers all operations and their parameters, but lacks return value or error handling information. It is largely complete 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?

The schema only provides a generic params object, while the description lists every parameter per operation with meaningful descriptions such as 'Season number' and 'Rating assigned from 1 to 5'. This is essential and far exceeds the schema's contribution.

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 calls the BetaSeries seasons API and enumerates eight distinct operations with their HTTP methods and effects. This specific resource-level focus distinguishes it from sibling tools like betaseries_episodes or betaseries_shows.

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 description instructs to pick an operation and pass parameters, and the operation list serves as internal guidance. However, it does not provide any context about when to use this tool versus alternatives, nor does it mention prerequisites or exclusions.

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

betaseries_showsBetaSeries: showsA

Call the BetaSeries "shows" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • delete-shows-archive [DELETE /shows/archive]: Remove a series from the archives of the member's account. Params: id? (ID of the series (Optional if thetvdb_id specified)), thetvdb_id? (ID of the series on TheTVDB (Optional if id specified))

  • delete-shows-favorite [DELETE /shows/favorite]: Remove a favorite series from the profile of the identified member. Params: id? (ID of the series to remove.)

  • delete-shows-note [DELETE /shows/note]: Delete a series rating. Params: id? (ID of the series (Optional if thetvdb_id specified)), thetvdb_id? (ID of the series on TheTVDB (Optional if id specified))

  • delete-shows-recommendation [DELETE /shows/recommendation]: Delete a sent or received series recommendation. Params: id? (Recommendation ID)

  • delete-shows-rewatch [DELETE /shows/rewatch]: Delete each rewatch an entire show. Params: id? (Series ID.), all? (Remove all rewatch for the given show (int 0|1))

  • delete-shows-show [DELETE /shows/show]: Remove a series from the member's account. Params: id? (ID of the series (Optional if thetvdb_id or imdb_id specified)), thetvdb_id? (ID of the series on TheTVDB (Optional if id or imdb_id specified)), imdb_id? (ID of the series on IMDB (Optional if thetvdb_id or id specified))

  • delete-shows-watch [DELETE /shows/watch]: Remove watch for an entire show. Params: id? (Series ID.)

  • get-shows-articles [GET /shows/articles]: Display blog articles that talk about the series. Params: id? (Series ID (Optional if url specified)), url? (Series URL. (Optional))

  • get-shows-characters [GET /shows/characters]: Retrieve characters of the series. Params: id? (Series ID (Optional if thetvdb_id specified)), thetvdb_id? (Series ID on TheTVDB (Optional if id specified))

  • get-shows-discover [GET /shows/discover]: Display the list of series to discover. Params: limit? (Limit the number of series to display (optional, default 100, maximum 200)), offset? (Starting number for the series list (optional, default 0)), summary? (Return only essential information)

  • get-shows-discover-platforms [GET /shows/discover_platforms]: Display the list of series to discover on major SVoD platforms. Params: summary? (Return only essential information)

  • get-shows-display [GET /shows/display]: Display information about a series. Params: id? (Series ID. You can include multiple by separating them with a comma (Optional)), thetvdb_id? (Series ID on TheTVDB. You can include multiple by separating them with a comma (Optional)), imdb_id? (Series ID on IMDB. You can include multiple by separating them with a comma (Optional)), url? (Series URL. (Optional)), summary(default=false)? (Return only the essential information of the series.), includes? (If summary = true, add some additional blocks to the return: user, notes separated by a comma (optional).)

  • get-shows-episodes [GET /shows/episodes]: Display episodes of a series. Params: id? (ID of the series (Optional if thetvdb_id specified)), thetvdb_id? (ID of the series on TheTVDB (Optional if id specified)), season? (Season number (Optional)), episode? (Episode number (Optional)), subtitles? (Display subtitles if specified (Optional))

  • get-shows-favorites [GET /shows/favorites]: Retrieve the favorite series of the member. Params: id? (Member's ID, optional, if not specified uses the identified member.), order? (Specify return order: alphabetical, progression, remaining_time, remaining_episodes (optional, default alphabetical)), limit? (Limit the number of series to display (optional, default 100, maximum 200)), offset? (Starting number for the series list (optional, default 0)), status? (Filter series by status: current, active, archived (optional)), summary? (Return only essential series info), includes? (If summary = true, add certain additional blocks to the return: user, userVisited, notes, seasons separated by a comma (optional))

  • get-shows-genres [GET /shows/genres]: Display the list of available series genres. Params: no parameters

  • get-shows-list [GET /shows/list]: Display the list of all series. Params: order? (Specify return order: alphabetical, popularity, followers (optional)), since? (Display only series modified since this date (UNIX timestamp — optional)), recent? (Only series from the last two years), starting? (Display series starting with specified characters (optional)), start? (Starting number for series list (optional, default 0)), limit? (Limit number of series displayed (optional, default 100)), filter? (Display filter (optional, new=only series not in the account)), platforms? (IDs of SVOD/VOD platforms where series are available), country? (Country for SVOD/VOD platforms), summary? (Return only essential series info), broadcasted? (Return only already broadcasted series)

  • get-shows-member [GET /shows/member]: Display the list of all series of the member. Params: id? (Member's ID (optional, default identified member)), order? (Specify return order: alphabetical, progression, remaining_time, remaining_episodes, last_seen, last_added, rating, avg_rating, custom, next_date (optional, default alphabetical)), limit? (Limit the number of series to display (optional, default 100, maximum 200)), offset? (Starting number for the series list (optional, default 0)), status? (Filter series by status: current, active, archived, archived_and_completed, archived_and_not_started, completed, active_and_completed, not_started, stopped (optional)), excluded_genres? (Exclude certain genres separated by a comma for the series return (optional)), excluded_networks? (Exclude certain networks separated by a comma for the series return (optional)), excluded_status? (Exclude certain statuses for the series return (optional)), tags? (Retrieve series with tags separated by a comma (optional)), excluded_tags? (Exclude series with tags separated by a comma (optional)), summary? (Return only essential series info), includes? (If summary = true, add certain additional blocks to the return: user, userVisited, notes, platforms, seasons separated by a comma (optional)), platforms? (List of platform IDs where series must be available (Optional))

  • get-shows-pictures [GET /shows/pictures]: Retrieve images of the series. Params: id? (Series ID (Optional if thetvdb_id specified)), thetvdb_id? (Series ID on TheTVDB (Optional if id specified)), order? (Specify return order: -date (date DESC), date (date ASC) (optional, default sort by id ASC)), start? (Starting number for the image list (optional, default 0)), limit? (Limit the number of images to display (optional, default all)), format? (Image display format: hd or all (optional, default all))

  • get-shows-random [GET /shows/random]: Display a random series. Params: nb? (Number of series to display, default 1), summary? (Return only essential series info)

  • get-shows-recommendations [GET /shows/recommendations]: Retrieve recommendations received by the identified user. Params: no parameters

  • get-shows-search [GET /shows/search]: Search for a series, with member information if a token is provided. Params: title? (Searched title), summary? (Return only essential series info), order? (Return order (title|popularity|followers), default title), recent? (Only series from the last two years), platforms? (IDs of SVOD/VOD platforms where series are available), country? (Country for SVOD/VOD platforms), nbpp? (Number of results per page, default 5, maximum 100), page? (Page number, default 1)

  • get-shows-seasons [GET /shows/seasons]: Display the seasons of the series. Params: id? (Series ID (Optional if thetvdb_id specified)), thetvdb_id? (Series ID on TheTVDB (Optional if id specified))

  • get-shows-similars [GET /shows/similars]: Retrieve series marked as similar. Params: id? (Series ID (Optional if thetvdb_id specified)), thetvdb_id? (Series ID on TheTVDB (Optional if id specified)), details? (Return series details)

  • get-shows-unrated [GET /shows/unrated]: Retrieve the list of finished and unrated series. Params: nbpp? (Number of results per page, default 20), page? (Page number, default 1), date? (Time limit, month for series ended in the last 30 days, all for all finished series (Optional, default month))

  • get-shows-videos [GET /shows/videos]: Retrieve videos associated with the series. Params: id? (Series ID (Optional if thetvdb_id specified)), thetvdb_id? (Series ID on TheTVDB (Optional if id specified)), order? (Specify return order: -date (add date DESC), date (add date ASC) (optional, default sort by season/episode)), start? (Starting number for the video list (optional, default 0)), limit? (Limit the number of videos to display (optional, default all))

  • post-shows-archive [POST /shows/archive]: Archive a series in the member's account. Params: id? (ID of the series (Optional if thetvdb_id specified)), thetvdb_id? (ID of the series on TheTVDB (Optional if id specified))

  • post-shows-favorite [POST /shows/favorite]: Add a favorite series to the profile of the identified member. Params: id? (ID of the series to add.)

  • post-shows-note [POST /shows/note]: Rate a series. Params: id? (ID of the series (Optional if thetvdb_id specified)), thetvdb_id? (ID of the series on TheTVDB (Optional if id specified)), note (Rating assigned from 1 to 5)

  • post-shows-recommendation [POST /shows/recommendation]: Create a series recommendation from a member to a friend. Params: id? (ID of the series (Optional if thetvdb_id specified)), thetvdb_id? (ID of the series on TheTVDB (Optional if id specified)), to? (Friend's member ID), comments? (Comments for the friend (Optional))

  • post-shows-rewatch [POST /shows/rewatch]: Rewatch an entire show. Params: id? (Series ID.)

  • post-shows-show [POST /shows/show]: Add a series to the member's account. Params: id? (Series ID. You can include multiple by separating them with a comma (Optional if thetvdb_id or imdb_id specified)), thetvdb_id? (Series ID on TheTVDB. You can include multiple by separating them with a comma (Optional if id or imdb_id specified)), imdb_id? (Series ID on IMDB. You can include multiple by separating them with a comma (Optional if id or thetvdb_id specified)), episode_id? (ID of the last watched episode. If multiple series, the order of episodes must be exactly the same (Optional))

  • post-shows-tags [POST /shows/tags]: Update tags for the given series of the identified member. Params: id? (ID of the series to tag.), tags? (Series tags: Words separated by a comma.)

  • post-shows-watch [POST /shows/watch]: Bulk watch an entire show. Params: id? (Series ID.), note? (Rating assigned from 1 to 5 (optional))

  • put-shows-recommendation [PUT /shows/recommendation]: Change the status of a received series recommendation. Params: id? (Recommendation ID), status? (Status (accept or decline))

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A3.7/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses the HTTP method and a short functional summary for each operation (e.g., 'Remove a series from the member's account'), which conveys side effects. However, it does not mention authentication requirements, rate limits, or error behavior, leaving some transparency gaps.

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

Conciseness3/5

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

The description is front-loaded with a clear high-level instruction, but the body is an extensive, repetitive list of 34 operations with parameters. While each entry provides necessary information, the sheer length and identical phrasing patterns make it less concise than it could be, though still structurally organized.

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

Completeness2/5

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

Given the tool's complexity and absence of an output schema, the description should explain return formats or response structures, but it does not. It also omits information about authentication, error handling, and pagination details beyond what parameter documentation hints at. The functional summaries are insufficient for an agent to fully anticipate tool behavior.

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

Parameters5/5

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

The input schema only defines a generic 'params' object, but the description goes far beyond by specifying exact parameter names, optionality, and semantics for every operation (e.g., 'id? (Series ID (Optional if thetvdb_id specified))'). This is essential for correct invocation and fully compensates for the schema's lack of operation-specific detail.

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

Purpose5/5

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

The description opens with 'Call the BetaSeries "shows" API', which is a specific verb and resource clearly distinct from sibling tools focused on other domains (episodes, seasons, members, etc.). It enumerates all show-related operations, making the tool's scope 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?

The description provides the instruction 'Pick an operation and pass its parameters in the params object', which implies usage, but it does not explicitly state when to prefer this tool over alternatives like betaseries_seasons or betaseries_episodes. Context is clear from the operation list, but no exclusions or alternatives are given.

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

betaseries_statsBetaSeries: statsA

Call the BetaSeries "stats" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • get-stats-shows-ranking [GET /stats/shows_ranking]: Get shows ranking based on BigQuery aggregated data.. Params: day? (Date for ranking (format Y-m-d), default is yesterday), country? (Country code for ranking (fr, de, es, all), default is fr), type? (Type of ranking: recent (shows with ≤3 seasons) or all, default is recent), period? (Period in days (7 or 30), default is 7), svod? (Filter by SVOD availability: only (SVOD only) or all, default is only), genre? (Genre filter: all, animation, no_animation, default is no_animation), platform_id? (Filter by specific platform ID (optional)), limit? (Limit the number of shows to return (max 100), default is 100)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A3.8/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It states the HTTP method (GET) and endpoint, and notes the data source (BigQuery aggregated data), which gives some context. However, it doesn't explicitly say whether authentication is required, rate limits, or response structure. For a read-only operation, this is a moderate level of transparency.

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

Conciseness4/5

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

The description is efficiently structured with a brief introduction followed by a bulleted list of the operation and its parameters. It avoids unnecessary words, though there is a minor typo ('data..'). The length is justified by the parameter detail.

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 single-operation wrapper with no output schema, the description covers the operation's purpose, all parameters, and their semantics. It doesn't describe the response structure, but that's not strictly necessary for selection and invocation. Given the tool's simplicity, this is nearly complete.

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 description meticulously documents all parameters: name, optionality, default values, allowed values, and constraints (e.g., limit max 100). The schema only provides a generic 'params' object, so the description adds essential meaning for every parameter, making it highly informative.

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 clearly identifies the tool as a wrapper for the BetaSeries stats API and names the specific operation (get-stats-shows-ranking) with a one-line summary of what it returns (shows ranking). While it doesn't explicitly distinguish itself from sibling tools, the 'stats' resource is unique among the siblings, so purpose is clear.

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 description says to 'Pick an operation and pass its parameters,' which implies the usage pattern, but it doesn't provide when-to-use vs. alternatives or any exclusions. Sibling tools are for other resources, so using this for stats is implied, but not explicitly stated.

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

betaseries_subtitlesBetaSeries: subtitlesA

Call the BetaSeries "subtitles" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • get-subtitles-episode [GET /subtitles/episode]: Display subtitles for a given episode. Params: id (ID of the episode), language? (Display only certain languages: all|vovf|vo|vf (Optional))

  • get-subtitles-last [GET /subtitles/last]: Display the latest subtitles retrieved by BetaSeries. Params: number? (Number of subtitles, maximum 100), language? (Display only certain languages: all|vovf|vo|vf (Optional))

  • get-subtitles-season [GET /subtitles/season]: Display subtitles for a season or all seasons. Params: id (ID of the series), season? (Season number or 'all' to retrieve packages for all seasons (Optional, default is all)), language? (Display only certain languages: all|vovf|vo|vf (Optional))

  • get-subtitles-show [GET /subtitles/show]: Display subtitles for a given show. Params: id (ID of the show), language? (Display only certain languages: all|vovf|vo|vf (Optional))

  • post-subtitles-report [POST /subtitles/report]: Reports subtitles as incorrect to be removed from the list.. Params: id (ID of the subtitle), reason? (Reason why the subtitle is incorrect)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A4.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden of disclosing behavior. It does note that post-subtitles-report removes subtitles from the list, indicating a side effect. However, it does not mention authentication requirements, rate limits, or response format, leaving notable gaps.

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 well-structured: a brief intro followed by a bulleted list of operations, each with endpoint and parameters. It is efficient for the number of operations, contains no filler, and front-loads the core purpose.

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?

The description fully covers all five operations and their parameters, which is the essential information for invoking the tool. It lacks return-value details and error handling, but given the absence of an output schema and the multi-operation nature, it is reasonably complete.

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 input schema's params object is a generic string map, so it provides no specific parameter names or values. The description is the sole source of parameter semantics, listing exactly which parameters each operation accepts (e.g., id, language, season, number) and their allowed values, adding far more meaning than the schema.

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

Purpose5/5

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

The description clearly states it calls the BetaSeries 'subtitles' API and enumerates five specific operations with their endpoints, distinguishing it from sibling tools like betaseries_shows or betaseries_episodes. Each operation is explicitly named, making the tool's purpose unmistakable.

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 to use each operation (episode, last, season, show, report) by outlining their specific use cases. It does not explicitly contrast with sibling tools, but the resource-specific scope makes the appropriate usage obvious.

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

betaseries_tagsBetaSeries: tagsA

Call the BetaSeries "tags" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • delete-tags-tag [DELETE /tags/tag]: Remove a tag for the show (or movie) for the connected member. Params: show_id? (ID of the show), movie_id? (ID of the movie), tag? (Label of the tag to remove. You can specify several by separating them with a comma)

  • get-tags-list [GET /tags/list]: Display all tags created by the connected member. Params: type? (Type of media for the tags to display (show or movie, default is show))

  • post-tags-tag [POST /tags/tag]: Add a tag (or several) for the show (or movie) for the connected member. Params: show_id? (ID of the show), movie_id? (ID of the movie), tag? (Label of the tag to create. You can add several by separating them with a comma)

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A4.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries the burden. It discloses that delete-tags-tag and post-tags-tag modify data and get-tags-list reads, and mentions the 'connected member' scope. But it omits response formats, error behavior, and idempotency details, which are important for a mutation tool.

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 front-loaded with the usage pattern, followed by a structured bullet list of three operations. Each line is informational, with no filler, and the format allows quick scanning and accurate selection.

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

Completeness3/5

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

The description fully specifies operations and parameters but lacks information about API responses, success/error conditions, and authentication requirements beyond 'connected member'. Since there is no output schema, the missing return-value documentation leaves a notable gap for an agent to anticipate tool output.

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's params property is a generic key/value object that explicitly refers to the tool description for actual parameter names. The description compensates fully by listing show_id, movie_id, tag, and type per operation, with optional markers and human-readable explanations. This is essential semantic coverage beyond what the structured schema provides.

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

Purpose5/5

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

The description clearly states it calls the BetaSeries 'tags' API and enumerates three specific operations (delete-tags-tag, get-tags-list, post-tags-tag) with HTTP methods, paths, and actions. This makes the tool's purpose unambiguous and distinguishes it from sibling tools that handle different resources.

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 opening instruction tells the agent to pick an operation and pass parameters in the params object, and each operation entry lists its specific parameters. However, it does not explicitly compare against alternative tools or state when tags are preferable to other betaseries tools, though sibling names suggest distinct domains.

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

betaseries_timelineBetaSeries: timelineA

Call the BetaSeries "timeline" API. Pick an operation and pass its parameters in the params object.

Available operations:

  • get-timeline-event [GET /timeline/event]: Display a particular event. Params: id (ID of the event)

  • get-timeline-feed [GET /timeline/feed]: Display the latest events of the friends of the identified member. Params: nbpp? (Number of events per page, maximum 100), page? (Page number (Optional, default 1)), types? (Types of events to return, separated by a comma (Optional))

  • get-timeline-friends [GET /timeline/friends]: Display the latest events of the friends of the identified member. Params: nbpp? (Number of events per page, maximum 100), since_id? (ID of the last event received to get previous ones (Optional)), last_id? (ID of the last event received to get subsequent ones (Optional)), types? (Types of events to return, separated by a comma (Optional)), self? (Include events of the identified member (Optional, default 0))

  • get-timeline-home [GET /timeline/home]: Display the latest events on the site. Params: nbpp? (Number of events per page, maximum 100), since_id? (ID of the last event received to get previous ones (Optional)), last_id? (ID of the last event received to get subsequent ones (Optional)), types? (Types of events to return, separated by a comma (Optional))

  • get-timeline-member [GET /timeline/member]: Display the latest events of the specified member. Params: id (ID of the member), nbpp? (Number of events per page, maximum 100), since_id? (ID of the last event received to get previous ones (Optional)), last_id? (ID of the last event received to get subsequent ones (Optional)), types? (Types of events to return, separated by a comma (Optional))

  • get-timeline-show [GET /timeline/show]: Display the latest events of the connected member about the specified show. Params: id? (ID of the series (Optional if thetvdb_id provided)), thetvdb_id? (ID of the series on TheTVDB (Optional if id provided)), nbpp? (Number of events per page, maximum 100), since_id? (ID of the last event received to get previous ones (Optional)), last_id? (ID of the last event received to get subsequent ones (Optional))

ParametersJSON Schema
NameRequiredDescriptionDefault
paramsNoQuery parameters for the chosen operation, as string key/value pairs. See this tool's description for the accepted parameter names per operation.
operationYesWhich operation to perform

TDQS

A4.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It implies read-only via 'Display' and hints at authentication with 'identified member' and 'connected member' for some operations. However, it does not explicitly state authentication requirements, rate limits, or response format. The two nearly identical descriptions for get-timeline-feed and get-timeline-friends add ambiguity. This is adequate but not richly transparent.

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

Conciseness4/5

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

The description is long but necessarily so for six operations. It is front-loaded with an instruction and uses a consistent, scannable format (operation [endpoint]: purpose, Params: list). Some repetition in parameter definitions (e.g., nbpp, since_id) is present but acceptable for standalone operation reference. No waste.

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 multi-operation tool with no output schema, the description covers all operation purposes and parameters thoroughly. It lacks explicit details on authentication, response structure, or error behavior, which are important for a tool requiring an identified user for several operations. However, given the scope, it is mostly complete.

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 operation (enum) and a generic params object without property specifics, so the description is the sole source of parameter meaning. It lists every parameter per operation with explanations (e.g., 'id (ID of the event)', 'nbpp? (Number of events per page, maximum 100)') and marks optional ones with '?'. This far exceeds the schema's coverage.

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

Purpose5/5

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

The description clearly states this tool calls the BetaSeries 'timeline' API and lists six distinct operations, each with a specific verb and resource (e.g., 'Display a particular event', 'Display the latest events of the friends of the identified member'). This differentiates the operations within the tool and the timeline resource from sibling tools.

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

Usage Guidelines4/5

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

The description provides clear context for selecting operations by detailing what each returns (event vs. friends' feed vs. site-wide events) and notes optional parameters like pagination. It does not explicitly reference sibling tools or when to avoid this tool, but the operation-level guidance is solid. Lacks explicit exclusions or alternatives, 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.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 23 tool updatesv0.1.0
    • First observedbetaseries_badges
    • First observedbetaseries_collections
    • First observedbetaseries_comments
    • First observedbetaseries_episodes
    • First observedbetaseries_friends
    • First observedbetaseries_members
    • First observedbetaseries_messages
    • First observedbetaseries_movies
    • First observedbetaseries_news
    • First observedbetaseries_persons
    • First observedbetaseries_pictures
    • First observedbetaseries_planning
    • First observedbetaseries_platforms
    • First observedbetaseries_polls
    • First observedbetaseries_quiz
    • First observedbetaseries_reports
    • First observedbetaseries_search
    • First observedbetaseries_seasons
    • First observedbetaseries_shows
    • First observedbetaseries_stats
    • First observedbetaseries_subtitles
    • First observedbetaseries_tags
    • First observedbetaseries_timeline

TDQS

A3.8/5.0

Scored across 23 tools

Disambiguation4/5

Each tool is named after a distinct resource (persons, badges, collections, etc.), so the boundaries are mostly clear. However, search functionality is duplicated: betaseries_search offers generic and per-type searches, while betaseries_movies, betaseries_shows, and betaseries_members also have their own search operations, which could cause misselection.

Naming Consistency5/5

All 23 tools follow the consistent pattern betaseries_<resource>. The nested operations also follow a consistent verb-noun convention (e.g., get-shows-display, post-comments-comment), making the naming predictable across the entire set.

Tool Count3/5

23 tools is on the heavy side but justified given the comprehensive BetaSeries API surface. It sits in the borderline range (16-25) where each tool earns its place but the overall number feels bulky for an agent to navigate.

Completeness5/5

The tool set covers the full domain of a TV/movie tracking service: shows, movies, episodes, seasons, planning, subtitles, comments, messaging, friends, member profiles, collections, polls, quizzes, and more. Lifecycle operations (create/read/update/delete) are present for the core resources, with no obvious dead ends.

Maintenance

ActivitySlowing
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    A comprehensive MCP server with 36 tools for tracking TV shows and movies, managing watchlists, and syncing ratings with Trakt.tv. It enables users to search extensive databases, check into current viewings, and receive personalized recommendations through natural language commands.
    24 npm
    4
    MIT
  • A
    license
    A
    quality
    D
    maintenance
    MCP server for managing a media server stack (Plex, Radarr, Overseerr, Bazarr, Prowlarr, Trakt.tv) using natural language to browse, request, and discover content.
    12
    MIT
  • F
    license
    Not graded
    quality
    D
    maintenance
    A robust MCP server that wraps The Movie Database API, enabling LLMs to search movies, get details, popular movies, and recommendations.
    -