Skip to main content
Glama
MAL MCP Server

MAL MCP Server

Get anime recommendations

get_anime_recommendations
Read-only

Fetch community recommendations for anime similar to a given MyAnimeList ID, ordered by votes and limited to 25 results; optionally filter adult or Ecchi entries.

Instructions

Get community recommendations for anime similar to the given mal_id, ordered by votes and capped at the top 25 (no pagination). Get the mal_id from search_anime. Use get_top_anime instead for a global popularity/score ranking not tied to one title, or get_recent_anime_recommendations for a site-wide feed of recommendation pairs not tied to this title either. sfw/sfw_strict filter NSFW entries out of the recommendation list itself. If Tenrai is unavailable and MAL_CLIENT_ID is set, transparently retries via the official API's own recommendations field (same output shape, but at most 10 entries, ordering may differ from Tenrai's, and sfw/sfw_strict are ignored entirely).

Input Schema

NameRequiredDescriptionDefault
idYesMyAnimeList numeric ID.
sfwNoIf true, exclude adult/explicit-rated entries (R+ Mild Nudity and up). Defaults to false (no filtering). Note: this alone still allows mainstream, safely-rated shows tagged with the Ecchi genre (fanservice) through — use `sfw_strict` to also exclude those.
sfw_strictNoIf true, exclude adult/explicit-rated entries AND anything tagged with the Ecchi genre, even otherwise-mainstream/safely-rated shows. Stricter than `sfw` alone. Defaults to false.

Output Schema

NameRequiredDescriptionDefault
recommendationsYes

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed9 schema fields changedv0.9.0
    • addedInput schema / properties / sfw
      Added value: +{
      +  "description": "If true, exclude adult/explicit-rated entries (R+ Mild Nudity and up). Defaults to false (no filtering). Note: this alone still allows mainstream, safely-rated shows tagged with the Ecchi genre (fanservice) through — use `sfw_strict` to also exclude those.",
      +  "type": "boolean"
      +}
    • addedInput schema / properties / sfw_strict
      Added value: +{
      +  "description": "If true, exclude adult/explicit-rated entries AND anything tagged with the Ecchi genre, even otherwise-mainstream/safely-rated shows. Stricter than `sfw` alone. Defaults to false.",
      +  "type": "boolean"
      +}
    • addedOutput schema / properties / recommendations / items / properties / mal_id / exclusiveMinimum
      Added value: +0
    • addedOutput schema / properties / recommendations / items / properties / mal_id / maximum
      Added value: +9007199254740991
    • changedOutput schema / properties / recommendations / items / properties / mal_id / type
      Previous value: -"number"New value: +"integer"
    • addedOutput schema / properties / recommendations / items / properties / votes / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / recommendations / items / properties / votes / minimum
      Added value: +0
    • changedOutput schema / properties / recommendations / items / properties / votes / type
      Previous value: -"number"New value: +"integer"
    • addedOutput schema / properties / recommendations / items / required
      Added value: +[
      +  "mal_id"
      +]
  2. Changed1 schema field changedv0.8.0
    • addedInput schema / additionalProperties
      Added value: +false
  3. Changed2 schema fields changedv0.7.1
    • changedInput schema / $schema
      Previous value: -"http://json-schema.org/draft-07/schema#"New value: +"https://json-schema.org/draft/2020-12/schema"
    • changedOutput schema / (root)
      Previous value: -nullNew value: +{
      +  "$schema": "https://json-schema.org/draft/2020-12/schema",
      +  "additionalProperties": false,
      +  "properties": {
      +    "recommendations": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "mal_id": {
      +            "type": "number"
      +          },
      +          "title": {
      +            "type": "string"
      +          },
      +          "url": {
      +            "type": "string"
      +          },
      +          "votes": {
      +            "type": "number"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "required": [
      +    "recommendations"
      +  ],
      +  "type": "object"
      +}
  4. First observedv0.1.0

TDQS

A4.7/5.0
Behavior5/5

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

Annotations already declare readOnlyHint=true and openWorldHint=true, but the description adds substantial operational detail: ordered by votes, capped at 25 with no pagination, and a transparent fallback that changes result count, ordering, and ignores sfw/sfw_strict. That is rich behavioral context beyond annotations.

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

Conciseness5/5

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

The description is a single dense paragraph but front-loads the main purpose, then alternatives, then filter behavior, then fallback. Every sentence earns its place with no redundant or vague filler.

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

Completeness5/5

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

With an output schema present, the description needn't explain return values. It covers the key operational caveats (cap, no pagination, ordering, fallback limitations) and points to the correct source for the required id. Nothing an agent needs to call this correctly is missing.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents id, sfw, and sfw_strict thoroughly. The description briefly reiterates that sfw/sfw_strict filter NSFW entries, adding slight context ('of the recommendation list itself'), but does not add syntax or format guidance beyond what the schema provides. Baseline 3 is appropriate.

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

Purpose5/5

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

States a specific verb and resource ('Get community recommendations for anime similar to the given mal_id') along with scope, ordering, and cap. Explicitly distinguishes from siblings get_top_anime and get_recent_anime_recommendations, so an agent can route correctly without opening schemas.

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

Usage Guidelines5/5

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

Gives explicit when-to-use guidance: 'Get the mal_id from search_anime' and names the two alternatives with the conditions that select them. Also describes the fallback path (Tenrai unavailable) so the agent knows what to expect in that case.

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