Skip to main content
Glama
MAL MCP Server

MAL MCP Server

Get a random character

get_random_character
Read-only

Fetch a random anime character's core details for discovery or trivia; use the returned mal_id to retrieve anime, manga, or voice actor info when needed.

Instructions

Return one random character (core details: no anime/manga/voice_actors — call get_character with the returned mal_id for those). Good for discovery / trivia. No official-API fallback exists for this tool — it always needs Tenrai itself to be reachable.

Tool call template

This tool declares no required parameters. Add optional parameters from the input schema as needed.

{
  "id": 1,
  "jsonrpc": "2.0",
  "method": "tools/call",
  "params": {
    "arguments": {},
    "name": "get_random_character"
  }
}

Input Schema

NameRequiredDescriptionDefault

No arguments

Output Schema

NameRequiredDescriptionDefault
urlNo
nameNo
aboutNo
animeNo
mangaNo
mal_idYes
favoritesNo
image_urlNo
nicknamesNo
name_kanjiNo
voice_actorsNo

Schema Changelog

Changes observed during successful MCP inspections.

  1. Changed19 schema fields changedv0.9.0
    • addedOutput schema / properties / anime / items / properties / mal_id / exclusiveMinimum
      Added value: +0
    • addedOutput schema / properties / anime / items / properties / mal_id / maximum
      Added value: +9007199254740991
    • changedOutput schema / properties / anime / items / properties / mal_id / type
      Previous value: -"number"New value: +"integer"
    • addedOutput schema / properties / anime / items / required
      Added value: +[
      +  "mal_id"
      +]
    • addedOutput schema / properties / favorites / maximum
      Added value: +9007199254740991
    • addedOutput schema / properties / favorites / minimum
      Added value: +0
    • changedOutput schema / properties / favorites / type
      Previous value: -"number"New value: +"integer"
    • addedOutput schema / properties / mal_id / exclusiveMinimum
      Added value: +0
    • addedOutput schema / properties / mal_id / maximum
      Added value: +9007199254740991
    • changedOutput schema / properties / mal_id / type
      Previous value: -"number"New value: +"integer"
    • addedOutput schema / properties / manga / items / properties / mal_id / exclusiveMinimum
      Added value: +0
    • addedOutput schema / properties / manga / items / properties / mal_id / maximum
      Added value: +9007199254740991
    • changedOutput schema / properties / manga / items / properties / mal_id / type
      Previous value: -"number"New value: +"integer"
    • addedOutput schema / properties / manga / items / required
      Added value: +[
      +  "mal_id"
      +]
    • addedOutput schema / properties / voice_actors / items / properties / mal_id / exclusiveMinimum
      Added value: +0
    • addedOutput schema / properties / voice_actors / items / properties / mal_id / maximum
      Added value: +9007199254740991
    • changedOutput schema / properties / voice_actors / items / properties / mal_id / type
      Previous value: -"number"New value: +"integer"
    • addedOutput schema / properties / voice_actors / items / required
      Added value: +[
      +  "mal_id"
      +]
    • addedOutput schema / 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": {
      +    "about": {
      +      "type": "string"
      +    },
      +    "anime": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "mal_id": {
      +            "type": "number"
      +          },
      +          "position": {
      +            "type": "string"
      +          },
      +          "role": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "favorites": {
      +      "type": "number"
      +    },
      +    "image_url": {
      +      "type": "string"
      +    },
      +    "mal_id": {
      +      "type": "number"
      +    },
      +    "manga": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "mal_id": {
      +            "type": "number"
      +          },
      +          "position": {
      +            "type": "string"
      +          },
      +          "role": {
      +            "type": "string"
      +          },
      +          "title": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    },
      +    "name": {
      +      "type": "string"
      +    },
      +    "name_kanji": {
      +      "type": "string"
      +    },
      +    "nicknames": {
      +      "items": {
      +        "type": "string"
      +      },
      +      "type": "array"
      +    },
      +    "url": {
      +      "type": "string"
      +    },
      +    "voice_actors": {
      +      "items": {
      +        "additionalProperties": false,
      +        "properties": {
      +          "language": {
      +            "type": "string"
      +          },
      +          "mal_id": {
      +            "type": "number"
      +          },
      +          "name": {
      +            "type": "string"
      +          }
      +        },
      +        "type": "object"
      +      },
      +      "type": "array"
      +    }
      +  },
      +  "type": "object"
      +}
  4. Addedv0.2.0

TDQS

A4.5/5.0
Behavior4/5

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

Beyond the readOnlyHint/openWorldHint annotations, the description discloses two non-obvious behaviors: the response is deliberately trimmed of anime/manga/voice_actors fields, and there is no official-API fallback so Tenrai itself must be reachable. That availability caveat is exactly the kind of context annotations cannot express.

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

Conciseness5/5

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

Three tight sentences, each earning its place: what you get, how to get the rest, when it's useful, and the failure caveat. The payload scope is front-loaded before the alternative routing.

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 doesn't need to enumerate return fields, yet it still flags which fields are absent. Combined with the fallback warning, an agent has everything needed to call it and to handle failure correctly.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline is 4; there is nothing for the description to disambiguate. It stays silent on parameters, which is correct here.

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 precise verb+resource ('Return one random character') and immediately delineates the payload's scope ('core details: no anime/manga/voice_actors'), which separates it from get_character and search_characters. An agent can pick this tool without opening the schema.

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

Usage Guidelines4/5

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

Gives an explicit use case ('discovery / trivia') and routes the agent to the correct alternative for full data ('call get_character with the returned mal_id'). It lacks an explicit exclusion statement (e.g. when not to use it), so it falls just short of a 5.

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