Skip to main content
Glama
Ukenn2112

Bangumi TV MCP Service

by Ukenn2112

Bangumi MCP Server

English | 中文


English

A Model Context Protocol (MCP) server that provides programmatic access to the Bangumi TV API, enabling AI assistants like Claude to interact with comprehensive anime, manga, music, game, and real-world media data.

Features

  • 55 MCP Tools: Complete coverage of Bangumi API endpoints

  • 3 Workflow Prompts: Pre-built multi-step workflows for common tasks

  • 1 Resource: Full OpenAPI specification for API documentation

  • Modular Architecture: Clean, maintainable codebase following MCP best practices

  • Type-Safe: Full Python type hints and enum definitions

  • Async Support: Non-blocking API calls using httpx

Quick Start

Prerequisites

  • Python 3.10 or higher

  • uv package manager (recommended) or pip

Installation

# Clone the repository
git clone https://github.com/Ukenn2112/BangumiMCP.git
cd BangumiMCP

# Create and activate virtual environment
uv venv
source .venv/bin/activate  # On Windows: .venv\Scripts\activate

# Install dependencies
uv pip install -e .

Configuration for Claude Desktop

Add to your claude_desktop_config.json:

{
  "mcpServers": {
    "bangumi-tv": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/BangumiMCP",
        "run",
        "main.py"
      ],
      "env": {
        "BANGUMI_TOKEN": "your_token_here"
      }
    }
  }
}

Note: BANGUMI_TOKEN is optional but required for:

  • Authenticated operations (collections, personal data)

  • R18 content access

  • Write operations (create, update, delete)

Get your token at: https://next.bgm.tv/demo/access-token

Project Architecture

BangumiMCP follows a modular architecture designed for maintainability and scalability:

BangumiMCP/
├── main.py                           # Server initialization (44 lines)
├── src/
│   ├── config.py                     # Configuration constants
│   ├── enums.py                      # API enum definitions (8 types)
│   ├── utils/
│   │   ├── api_client.py             # HTTP client & error handling
│   │   └── formatters.py             # Data formatting utilities
│   ├── resources/
│   │   └── openapi_resource.py       # OpenAPI specification resource
│   ├── tools/                        # 55 MCP tools organized by domain
│   │   ├── subject_tools.py          # Subjects & episodes (10 tools)
│   │   ├── character_tools.py        # Characters (7 tools)
│   │   ├── person_tools.py           # Persons & companies (7 tools)
│   │   ├── user_tools.py             # User information (3 tools)
│   │   ├── collection_tools.py       # Collections (11 tools)
│   │   ├── revision_tools.py         # Edit history (8 tools)
│   │   └── index_tools.py            # Indices/directories (9 tools)
│   └── prompts/
│       └── workflow_prompts.py       # Composite prompts (3)
├── bangumi-tv-api.json               # OpenAPI 3.0.3 specification
└── pyproject.toml                    # Project metadata

Available Tools

Subjects & Episodes (10 tools)

  • get_daily_broadcast - Weekly broadcast schedule

  • search_subjects - Full-text search with filters

  • browse_subjects - Category-based browsing

  • get_subject_details - Detailed subject information

  • get_subject_image - Subject image URL

  • get_subject_persons - Related creators/staff

  • get_subject_characters - Related characters

  • get_subject_relations - Related subjects

  • get_episodes - Episode list

  • get_episode_details - Episode information

Characters (7 tools)

  • search_characters - Character search

  • get_character_details - Character information

  • get_character_image - Character image URL

  • get_character_subjects - Subjects featuring character

  • get_character_persons - Voice actors & creators

  • collect_character - Add to favorites ⚠️ Requires auth

  • uncollect_character - Remove from favorites ⚠️ Requires auth

Persons (7 tools)

  • search_persons - Search creators/actors

  • get_person_details - Person information

  • get_person_image - Person image URL

  • get_person_subjects - Works by person

  • get_person_characters - Characters associated

  • collect_person - Add to favorites ⚠️ Requires auth

  • uncollect_person - Remove from favorites ⚠️ Requires auth

Users (3 tools)

  • get_user_info - Public user profile

  • get_user_avatar - User avatar URL

  • get_current_user - Authenticated user info ⚠️ Requires auth

Collections (11 tools)

  • get_user_collections - User's subject collections

  • get_user_subject_collection - Subject collection status

  • update_subject_collection - Update subject status ⚠️ Requires auth

  • get_user_episode_collection - Episode watch list ⚠️ Requires auth

  • update_episode_collection - Batch update episodes ⚠️ Requires auth

  • get_single_episode_collection - Single episode status ⚠️ Requires auth

  • update_single_episode_collection - Update single episode ⚠️ Requires auth

  • get_user_character_collections - Character collections

  • get_user_character_collection - Character collection status

  • get_user_person_collections - Person collections

  • get_user_person_collection - Person collection status

Revisions (8 tools)

  • get_person_revisions - Person edit history

  • get_person_revision - Single person edit detail

  • get_character_revisions - Character edit history

  • get_character_revision - Single character edit detail

  • get_subject_revisions - Subject edit history

  • get_subject_revision - Single subject edit detail

  • get_episode_revisions - Episode edit history

  • get_episode_revision - Single episode edit detail

Indices (9 tools)

  • create_index - Create new index ⚠️ Requires auth

  • get_index - Index details

  • update_index - Update index info ⚠️ Requires auth

  • get_index_subjects - Subjects in index

  • add_subject_to_index - Add subject ⚠️ Requires auth

  • update_index_subject - Update subject info ⚠️ Requires auth

  • remove_subject_from_index - Remove subject ⚠️ Requires auth

  • collect_index - Add index to collection ⚠️ Requires auth

  • uncollect_index - Remove index from collection ⚠️ Requires auth

Workflow Prompts

Pre-built multi-step workflows for common tasks:

  • search_and_summarize_anime - Search anime by keyword and get AI summary

  • get_subject_full_info - Get comprehensive subject information (details, persons, characters, relations)

  • find_voice_actor - Search character and identify voice actors

Development

Adding New Tools

  1. Identify the appropriate category (subject, character, person, etc.)

  2. Add the tool function to the corresponding file in src/tools/

  3. Register the tool in the module's register() function

  4. Update this README with the new tool count

Testing

# Test imports
python -c "from src.config import BANGUMI_TOKEN; print('OK')"
python -c "from src.tools import subject_tools; print('OK')"

# Run the server
uv run main.py

Code Structure

Dependency Hierarchy (no circular imports):

  • Level 0: config.py, enums.py (no dependencies)

  • Level 1: utils/ (depends on config & enums)

  • Level 2: resources/, tools/, prompts/ (depend on utils)

  • Level 3: main.py (orchestrates everything)

Import Guidelines:

  • Use relative imports within src/ package (e.g., from ..config import)

  • Import from specific modules, not package level

  • Follow the dependency hierarchy to avoid circular imports

Environment Variables

Variable

Required

Description

BANGUMI_TOKEN

No

Bangumi Access Token for authenticated operations and R18 content

License

This project is built on the Bangumi API documentation and follows its terms of service.

Contributing

Contributions are welcome! Please feel free to submit issues or pull requests.


Related MCP server: MyAnimeList MCP Server

中文

一个基于 Model Context Protocol (MCP) 的服务器,为 Bangumi TV API 提供程序化访问接口,使 Claude 等 AI 助手能够与海量的动画、漫画、音乐、游戏和真人影视数据进行交互。

功能特性

  • 55 个 MCP 工具:完整覆盖 Bangumi API 端点

  • 3 个工作流提示:预构建的多步骤工作流,用于常见任务

  • 1 个资源:完整的 OpenAPI 规范文档

  • 模块化架构:清晰、可维护的代码库,遵循 MCP 最佳实践

  • 类型安全:完整的 Python 类型提示和枚举定义

  • 异步支持:使用 httpx 的非阻塞 API 调用

快速开始

前置要求

  • Python 3.10 或更高版本

  • uv 包管理器(推荐)或 pip

安装

# 克隆仓库
git clone https://github.com/Ukenn2112/BangumiMCP.git
cd BangumiMCP

# 创建并激活虚拟环境
uv venv
source .venv/bin/activate  # Windows: .venv\Scripts\activate

# 安装依赖
uv pip install -e .

Claude Desktop 配置

claude_desktop_config.json 中添加:

{
  "mcpServers": {
    "bangumi-tv": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/BangumiMCP",
        "run",
        "main.py"
      ],
      "env": {
        "BANGUMI_TOKEN": "your_token_here"
      }
    }
  }
}

注意BANGUMI_TOKEN 是可选的,但以下操作需要:

  • 认证操作(收藏、个人数据)

  • 访问 R18 内容

  • 写操作(创建、更新、删除)

获取令牌:https://next.bgm.tv/demo/access-token

项目架构

BangumiMCP 采用模块化架构,便于维护和扩展:

BangumiMCP/
├── main.py                           # 服务器初始化(44 行)
├── src/
│   ├── config.py                     # 配置常量
│   ├── enums.py                      # API 枚举定义(8 种类型)
│   ├── utils/
│   │   ├── api_client.py             # HTTP 客户端和错误处理
│   │   └── formatters.py             # 数据格式化工具
│   ├── resources/
│   │   └── openapi_resource.py       # OpenAPI 规范资源
│   ├── tools/                        # 55 个 MCP 工具,按领域组织
│   │   ├── subject_tools.py          # 条目和章节(10 个工具)
│   │   ├── character_tools.py        # 角色(7 个工具)
│   │   ├── person_tools.py           # 人物和公司(7 个工具)
│   │   ├── user_tools.py             # 用户信息(3 个工具)
│   │   ├── collection_tools.py       # 收藏(11 个工具)
│   │   ├── revision_tools.py         # 编辑历史(8 个工具)
│   │   └── index_tools.py            # 目录(9 个工具)
│   └── prompts/
│       └── workflow_prompts.py       # 组合提示(3 个)
├── bangumi-tv-api.json               # OpenAPI 3.0.3 规范
└── pyproject.toml                    # 项目元数据

可用工具

条目和章节(10 个工具)

  • get_daily_broadcast - 每周放送时间表

  • search_subjects - 全文搜索,支持过滤

  • browse_subjects - 按分类浏览

  • get_subject_details - 详细条目信息

  • get_subject_image - 条目图片 URL

  • get_subject_persons - 相关创作者/制作人员

  • get_subject_characters - 相关角色

  • get_subject_relations - 相关条目

  • get_episodes - 章节列表

  • get_episode_details - 章节信息

角色(7 个工具)

  • search_characters - 角色搜索

  • get_character_details - 角色信息

  • get_character_image - 角色图片 URL

  • get_character_subjects - 角色出现的条目

  • get_character_persons - 声优和创作者

  • collect_character - 添加到收藏 ⚠️ 需要认证

  • uncollect_character - 从收藏中移除 ⚠️ 需要认证

人物(7 个工具)

  • search_persons - 搜索创作者/演员

  • get_person_details - 人物信息

  • get_person_image - 人物图片 URL

  • get_person_subjects - 人物参与的作品

  • get_person_characters - 关联的角色

  • collect_person - 添加到收藏 ⚠️ 需要认证

  • uncollect_person - 从收藏中移除 ⚠️ 需要认证

用户(3 个工具)

  • get_user_info - 公开用户资料

  • get_user_avatar - 用户头像 URL

  • get_current_user - 当前认证用户信息 ⚠️ 需要认证

收藏(11 个工具)

  • get_user_collections - 用户的条目收藏

  • get_user_subject_collection - 条目收藏状态

  • update_subject_collection - 更新条目状态 ⚠️ 需要认证

  • get_user_episode_collection - 章节观看列表 ⚠️ 需要认证

  • update_episode_collection - 批量更新章节 ⚠️ 需要认证

  • get_single_episode_collection - 单个章节状态 ⚠️ 需要认证

  • update_single_episode_collection - 更新单个章节 ⚠️ 需要认证

  • get_user_character_collections - 角色收藏

  • get_user_character_collection - 角色收藏状态

  • get_user_person_collections - 人物收藏

  • get_user_person_collection - 人物收藏状态

修订历史(8 个工具)

  • get_person_revisions - 人物编辑历史

  • get_person_revision - 单个人物编辑详情

  • get_character_revisions - 角色编辑历史

  • get_character_revision - 单个角色编辑详情

  • get_subject_revisions - 条目编辑历史

  • get_subject_revision - 单个条目编辑详情

  • get_episode_revisions - 章节编辑历史

  • get_episode_revision - 单个章节编辑详情

目录(9 个工具)

  • create_index - 创建新目录 ⚠️ 需要认证

  • get_index - 目录详情

  • update_index - 更新目录信息 ⚠️ 需要认证

  • get_index_subjects - 目录中的条目

  • add_subject_to_index - 添加条目 ⚠️ 需要认证

  • update_index_subject - 更新条目信息 ⚠️ 需要认证

  • remove_subject_from_index - 移除条目 ⚠️ 需要认证

  • collect_index - 收藏目录 ⚠️ 需要认证

  • uncollect_index - 取消收藏目录 ⚠️ 需要认证

工作流提示

预构建的多步骤工作流,用于常见任务:

  • search_and_summarize_anime - 按关键字搜索动画并获取 AI 摘要

  • get_subject_full_info - 获取全面的条目信息(详情、人物、角色、关联)

  • find_voice_actor - 搜索角色并识别声优

开发

添加新工具

  1. 确定合适的类别(条目、角色、人物等)

  2. 将工具函数添加到 src/tools/ 中相应的文件

  3. 在模块的 register() 函数中注册工具

  4. 更新此 README 中的工具数量

测试

# 测试导入
python -c "from src.config import BANGUMI_TOKEN; print('OK')"
python -c "from src.tools import subject_tools; print('OK')"

# 运行服务器
uv run main.py

代码结构

依赖层次结构(无循环导入):

  • Level 0: config.py, enums.py(无依赖)

  • Level 1: utils/(依赖 config 和 enums)

  • Level 2: resources/, tools/, prompts/(依赖 utils)

  • Level 3: main.py(协调所有模块)

导入指南

  • src/ 包内使用相对导入(例如 from ..config import

  • 从特定模块导入,而不是包级别

  • 遵循依赖层次结构以避免循环导入

环境变量

变量

必填

说明

BANGUMI_TOKEN

Bangumi 访问令牌,用于认证操作和访问 R18 内容

许可证

此项目基于 Bangumi API 文档构建,并遵循其服务条款。

相关项目

贡献

欢迎贡献!请随时提交问题或拉取请求。


致谢

此项目基于 Bangumi API 文档构建。

Available Tools

17 tools
browse_subjectsA
Browse subjects by type and filters.

Supported Subject Types (integer enum, required):
1: Book, 2: Anime, 3: Music, 4: Game, 6: Real

Supported Categories (integer enums for 'cat', specific to SubjectType):
Book (type=1): Other=0, Comic=1001, Novel=1002, Illustration=1003
Anime (type=2): Other=0, TV=1, OVA=2, Movie=3, WEB=5
Game (type=4): Other=0, Games=4001, Software=4002, DLC=4003, Tabletop=4005
Real (type=6): Other=0, JP=1, EN=2, CN=3, TV=6001, Movie=6002, Live=6003, Show=6004

Supported Sort orders (string for 'sort', optional):
'date', 'rank' (Default sorting may vary if 'sort' is not provided)

Args:
    subject_type: Required filter by subject type (integer value from SubjectType enum).
    cat: Optional filter by subject category (integer value from category enums).
    series: Optional filter for books (type=1). True for series main entry.
    platform: Optional filter for games (type=4). E.g. 'Web', 'PC', 'PS4'.
    sort: Optional sort order ('date' or 'rank').
    year: Optional filter by year.
    month: Optional filter by month (1-12).
    limit: Pagination limit. Max 50. Defaults to 30.
    offset: Pagination offset. Defaults to 0.

Returns:
    Formatted list of subjects or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
catNo
limitNo
monthNo
offsetNo
platformNo
seriesNo
sortNo
subject_typeYes
yearNo

TDQS

A4/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 of behavioral disclosure. It effectively describes key behaviors: it's a read operation (implied by 'Browse'), includes pagination with limits and offsets, specifies a max limit of 50, and outlines default values. It also details subject-specific filters (e.g., 'series' for books, 'platform' for games), which adds useful context beyond basic parameters.

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 clear sections (e.g., supported types, categories, sort orders, args, returns) and front-loaded key information. It's appropriately sized for a tool with 9 parameters and complex enums, though some redundancy exists (e.g., repeating 'optional' in the args list after stating it earlier). Every sentence adds value, but minor trimming could improve efficiency.

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 tool with 9 parameters, no annotations, and no output schema, the description is largely complete. It covers all parameters with semantics, includes behavioral details like pagination limits, and provides return format hints ('Formatted list of subjects'). However, it lacks explicit error handling guidance or examples of output structure, leaving some gaps in full context.

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?

Given 0% schema description coverage, the description compensates fully by providing detailed semantics for all 9 parameters. It explains enums for 'subject_type' and 'cat' with mappings, clarifies optional vs. required status, specifies constraints (e.g., 'limit: Max 50'), and adds context like 'series' being for books only. This goes well beyond what the minimal schema offers.

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 the tool's purpose as 'Browse subjects by type and filters,' which is a specific verb+resource combination. It distinguishes itself from sibling tools like 'search_subjects' by focusing on browsing with filtering rather than keyword-based searching. However, it doesn't explicitly contrast with all siblings like 'get_subject_details' or 'get_subject_characters.'

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 through parameter documentation (e.g., 'subject_type: Required filter by subject type'), suggesting it's for filtered browsing. It doesn't explicitly state when to use this tool versus alternatives like 'search_subjects' or 'get_subject_details,' nor does it mention prerequisites or exclusions. The guidance is functional but not comprehensive.

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

get_character_detailsB
Get details of a specific character.

Args:
    character_id: The ID of the character.

Returns:
    Formatted character details or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
character_idYes

TDQS

B3.2/5.0
Behavior2/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 of behavioral disclosure. It mentions that the tool returns 'formatted character details or an error message', which hints at output behavior, but lacks critical details like whether it's a read-only operation, authentication requirements, rate limits, or error handling specifics. For a tool with no annotation coverage, this is insufficient.

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 highly concise and well-structured, using a brief purpose statement followed by labeled 'Args' and 'Returns' sections. Every sentence earns its place by providing essential information without redundancy, making it easy to parse and front-loaded for quick understanding.

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 tool's low complexity (one parameter, no output schema, no annotations), the description is minimally adequate. It covers the basic purpose and parameter semantics but lacks behavioral context and usage guidelines. Without annotations or output schema, more detail on return values or operational constraints would improve completeness for agent selection.

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 explicitly defines the single parameter 'character_id' as 'The ID of the character', adding clear semantic meaning beyond the schema's basic type (integer). With 0% schema description coverage and only one parameter, this adequately compensates, though it doesn't specify format constraints (e.g., valid ID ranges).

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 the tool's purpose with a specific verb ('Get') and resource ('details of a specific character'), making it immediately understandable. However, it doesn't differentiate from sibling tools like 'search_characters' or 'get_character_subjects', which would require explicit comparison to earn a perfect score.

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 alternatives. With multiple sibling tools available (e.g., 'search_characters' for broader queries, 'get_character_subjects' for related data), there's no indication of prerequisites, constraints, or comparative use cases, leaving the agent to infer usage context.

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

get_character_personsB
List persons (e.g., voice actors) related to a character.

Args:
    character_id: The ID of the character.

Returns:
    Formatted list of related persons or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
character_idYes

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It mentions the tool lists persons and returns formatted data or errors, but lacks details on pagination, rate limits, authentication needs, or what 'formatted list' entails (e.g., structure, fields). This is a significant gap for a read operation with no annotation coverage.

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 core purpose, followed by structured Args and Returns sections. Every sentence earns its place by clarifying inputs and outputs without redundancy, making it highly efficient and well-organized.

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 annotations, no output schema, and low schema coverage, the description is minimally adequate. It covers the purpose and parameter semantics but lacks behavioral details (e.g., error conditions, data format) and usage guidelines relative to siblings, leaving gaps for an AI agent to infer 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?

Schema description coverage is 0%, but the description compensates by explaining the single parameter 'character_id' as 'The ID of the character', adding meaning beyond the schema's type annotation. With only one parameter clearly documented, this is sufficient for baseline understanding.

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 the verb ('List') and resource ('persons related to a character'), with examples ('voice actors') adding specificity. It distinguishes from siblings like 'get_person_characters' (reverse relationship) and 'get_character_details' (different data), though not explicitly named.

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

Usage Guidelines2/5

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

No explicit guidance on when to use this tool versus alternatives like 'get_person_characters' (which lists characters for a person) or 'get_subject_persons' (which may have overlapping functionality). The description implies usage when you have a character ID and want related persons, but lacks comparative context.

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

get_character_subjectsB
List subjects (e.g., anime, games) where a character appears.

Args:
    character_id: The ID of the character.

Returns:
    Formatted list of related subjects or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
character_idYes

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 carries full burden. It mentions returning a 'formatted list' or error, but lacks details on behavior such as pagination, rate limits, authentication needs, or what constitutes an error. This is inadequate for a tool with potential complexity in data retrieval.

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 sized and front-loaded, starting with the core purpose followed by args and returns. It uses minimal sentences without waste, though the structure with separate sections is slightly verbose for such a simple tool.

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 annotations, no output schema, and low schema coverage, the description is minimally complete. It covers the basic purpose and parameter intent but lacks details on output format, error handling, and behavioral traits, making it adequate but with clear gaps for effective tool use.

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 adds meaning beyond the input schema by explaining that 'character_id' refers to a character and that subjects include examples like anime and games. With 0% schema description coverage and only one parameter, this compensates well, though it could specify ID format or source more clearly.

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 the tool's purpose with a specific verb ('List') and resource ('subjects where a character appears'), and it distinguishes the resource type (subjects like anime, games). However, it doesn't explicitly differentiate from sibling tools like 'get_subject_characters' or 'get_character_details', which might handle related but different queries, leaving some ambiguity about uniqueness.

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 alternatives. With siblings like 'browse_subjects', 'search_characters', and 'get_character_details', there's no indication of context, prerequisites, or exclusions, leaving the agent to infer usage from the name alone.

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

get_daily_broadcastB
Get the daily broadcast schedule for the current week on Bangumi.

Returns:
    The broadcast schedule grouped by day of the week, or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

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 carries the full burden of behavioral disclosure. It mentions the return format ('grouped by day of the week') and error handling, but doesn't cover important aspects like rate limits, authentication needs, data freshness, or whether it's a read-only operation. For a tool with zero annotation coverage, this leaves significant gaps in understanding its behavior.

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 well-structured, consisting of two sentences: one stating the purpose and one describing the return format. It's front-loaded with the main function and avoids unnecessary details. However, it could be slightly more efficient by integrating the return info into the first sentence.

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 tool's complexity (simple read operation with no parameters) and lack of annotations/output schema, the description is minimally complete. It covers the basic purpose and return format, but misses behavioral details like error types or data scope. For a tool with no structured data, it's adequate but has clear gaps in providing full context.

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

Parameters4/5

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

The tool has 0 parameters, and schema description coverage is 100%, so there's no need for parameter details in the description. The description doesn't add parameter semantics, but this is acceptable given the lack of parameters. A baseline score of 4 is appropriate as it doesn't need to compensate for any gaps.

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 the tool's purpose: 'Get the daily broadcast schedule for the current week on Bangumi.' It specifies the verb ('Get'), resource ('daily broadcast schedule'), and scope ('current week on Bangumi'), which is clear and specific. However, it doesn't explicitly differentiate from sibling tools like 'get_episodes' or 'browse_subjects', which might also involve scheduling or content retrieval.

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 alternatives. It doesn't mention any prerequisites, exclusions, or comparisons to sibling tools such as 'get_episodes' or 'search_subjects', which could be related. This lack of context makes it harder for an agent to decide when this tool is appropriate.

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

get_episode_detailsC
Get details of a specific episode.

Args:
    episode_id: The ID of the episode.

Returns:
    Formatted episode details or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
episode_idYes

TDQS

C2.8/5.0
Behavior2/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 of behavioral disclosure. It states the tool retrieves details (implying a read operation) and may return an error, but doesn't specify authentication needs, rate limits, data format, or what 'formatted episode details' entails. For a tool with zero annotation coverage, this leaves 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.

Conciseness4/5

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

The description is concise and well-structured with three clear sections: purpose, args, and returns. Each sentence earns its place, and it's front-loaded with the main purpose. However, the 'Args' and 'Returns' sections could be integrated more smoothly, and some redundancy exists (e.g., 'episode_id' is repeated).

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 (simple retrieval), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'formatted episode details' includes, error conditions, or how it differs from sibling tools. For a tool in a server with many similar detail-fetching tools, more context is needed to guide effective use.

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 adds meaningful context for the single parameter 'episode_id' by specifying it's 'The ID of the episode', which clarifies its purpose beyond the schema's title 'Episode Id' and type 'integer'. With 0% schema description coverage and only one parameter, this adequately compensates, though it doesn't detail ID format or sources.

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

Purpose3/5

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

The description states the tool's purpose as 'Get details of a specific episode', which is clear but vague. It specifies the verb ('Get') and resource ('episode details'), but doesn't distinguish it from sibling tools like 'get_episodes' (which likely lists multiple episodes) or 'get_subject_details' (which might provide similar detail for subjects). The purpose is understandable but lacks differentiation from related tools.

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 alternatives. It doesn't mention sibling tools like 'get_episodes' for listing episodes or 'get_subject_details' for related details, nor does it specify prerequisites or exclusions. The only implied usage is needing an episode_id, but this is covered in the input schema, not in contextual guidance.

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

get_episodesA
List episodes for a subject.

Supported Episode Types (integer enum):
0: MainStory, 1: SP, 2: OP, 3: ED, 4: PV, 5: MAD, 6: Other

Args:
    subject_id: The ID of the subject.
    episode_type: Optional filter by episode type (integer value from EpType enum).
    limit: Pagination limit. Max 200. Defaults to 100.
    offset: Pagination offset. Defaults to 0.

Returns:
    Formatted list of episodes or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
episode_typeNo
limitNo
offsetNo
subject_idYes

TDQS

A3.5/5.0
Behavior3/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 adds some context: it lists supported episode types with an integer enum, mentions pagination with a max limit of 200, and notes that it returns a formatted list or error. However, it doesn't cover critical aspects like rate limits, authentication needs, or whether it's read-only (implied by 'List' but not explicit). The description compensates partially but leaves 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 and appropriately sized. It starts with a clear purpose statement, followed by an enum list, and then details parameters and returns in a bullet-like format. Every sentence adds value, with no wasted words. However, it could be slightly more front-loaded by integrating the enum into the purpose statement for faster 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?

Given the tool's moderate complexity (4 parameters, no output schema, no annotations), the description is partially complete. It covers parameters well and hints at returns, but lacks details on output format (e.g., structure of the 'formatted list'), error handling specifics, or behavioral traits like pagination behavior beyond limits. For a list tool with no annotations, more context on results would enhance completeness.

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 meaning beyond the input schema, which has 0% schema description coverage. It explains each parameter: 'subject_id' as the ID of the subject, 'episode_type' as an optional filter with enum details, 'limit' with max and default values, and 'offset' with default. This fully compensates for the schema's lack of descriptions, making parameters clear and actionable.

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 the tool's purpose: 'List episodes for a subject.' It specifies the verb ('List') and resource ('episodes for a subject'), making it easy to understand. However, it doesn't explicitly differentiate from sibling tools like 'get_episode_details' or 'browse_subjects,' which could provide similar or overlapping 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 no guidance on when to use this tool versus alternatives. It doesn't mention sibling tools like 'get_episode_details' (for specific episodes) or 'browse_subjects' (for broader subject listings), leaving the agent to infer usage based on context alone. This lack of explicit comparison reduces clarity in tool selection.

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

get_person_charactersA
List characters voiced or portrayed by a person (e.g., voice actor, actor).

Args:
    person_id: The ID of the person.

Returns:
    Formatted list of related characters or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
person_idYes

TDQS

A3.7/5.0
Behavior2/5

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

With no annotations provided, the description carries full burden for behavioral disclosure. While it mentions the tool returns 'Formatted list of related characters or an error message', it doesn't describe pagination behavior, rate limits, authentication requirements, or what constitutes a valid person_id. For a read operation with zero annotation coverage, this leaves 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 perfectly structured and concise: a clear purpose statement followed by separate Args and Returns sections. Every sentence earns its place, with no redundant information. The three-part structure (purpose, parameters, returns) is front-loaded and efficient.

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 single-parameter read tool with no output schema, the description provides adequate basic information about purpose and parameters. However, it lacks details about the return format (beyond 'formatted list'), error conditions, or how to obtain valid person_ids. Given the absence of annotations and output schema, more behavioral context would be beneficial.

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

Parameters4/5

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

With 0% schema description coverage and only one parameter, the description adds meaningful context by explaining that person_id refers to 'The ID of the person' and clarifying this is for 'voice actor, actor' contexts. This compensates well for the schema's lack of descriptions, though it doesn't specify format constraints or valid ranges for the integer ID.

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

Purpose5/5

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

The description clearly states the tool's purpose with specific verb ('List') and resource ('characters voiced or portrayed by a person'), and distinguishes it from siblings like get_person_details (which returns person info) or get_character_details (which returns character info). The parenthetical '(e.g., voice actor, actor)' provides helpful context about the type of person.

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 when you need character information for a specific person, but doesn't explicitly state when to use this tool versus alternatives like get_person_subjects (which returns subjects related to a person) or search_characters (which searches characters by criteria). No explicit when-not-to-use guidance or prerequisite information is provided.

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

get_person_detailsC
Get details of a specific person or company.

Args:
    person_id: The ID of the person/company.

Returns:
    Formatted person details or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
person_idYes

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. It states the tool retrieves details, implying a read-only operation, but doesn't cover critical aspects like authentication needs, rate limits, error conditions beyond 'error message', or what 'formatted person details' entails (e.g., structure, fields). This is inadequate for a tool with no annotation support.

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 well-structured: a clear purpose statement followed by Args and Returns sections. Every sentence adds value (e.g., specifying the parameter and return). It could be slightly more front-loaded by integrating the parameter hint into the main sentence, but it's efficient overall.

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 complexity (a retrieval tool with no annotations, no output schema, and 0% schema coverage), the description is incomplete. It doesn't explain what 'formatted person details' includes, potential side effects, or how errors are handled. For a tool that likely returns structured data, this leaves significant gaps for the agent.

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?

The description adds minimal semantics: it explains that 'person_id' is 'The ID of the person/company,' clarifying it can refer to either entity. With 0% schema description coverage (schema has no descriptions), this provides some value, but it doesn't detail ID format, sourcing, or constraints. The baseline is 3 since the schema lacks descriptions, and the description compensates slightly but not fully.

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 the tool's purpose: 'Get details of a specific person or company.' It uses a specific verb ('Get') and resource ('person or company'), making the intent unambiguous. However, it doesn't explicitly differentiate from sibling tools like 'search_persons' or 'get_person_characters', which likely serve different purposes (searching vs. retrieving specific details).

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 alternatives. It doesn't mention prerequisites (e.g., needing a person_id), exclusions, or comparisons to siblings like 'search_persons' (for finding people) or 'get_person_characters' (for related data). This leaves the agent to infer usage from context alone.

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

get_person_subjectsB
List subjects (e.g., anime, games) a person is related to (e.g., worked on).

Args:
    person_id: The ID of the person.

Returns:
    Formatted list of related subjects or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
person_idYes

TDQS

B3.2/5.0
Behavior2/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 of behavioral disclosure. It states the tool lists subjects and returns a formatted list or error, but lacks details on permissions, rate limits, pagination, or what 'formatted' entails. For a read operation with zero annotation coverage, this leaves significant gaps in understanding how the tool behaves.

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 efficiently structured with a clear purpose statement followed by 'Args' and 'Returns' sections. Every sentence earns its place by providing essential information without redundancy. It is front-loaded with the core functionality and appropriately sized for a simple tool.

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 tool's low complexity (one parameter, no output schema, no annotations), the description is adequate but not complete. It covers the basic purpose and parameter semantics but lacks behavioral details (e.g., error conditions, output format specifics). Without annotations or output schema, more context on what 'formatted list' means 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 adds meaningful context for the single parameter 'person_id' by explaining it's 'The ID of the person,' which clarifies its role beyond the schema's basic type (integer). With 0% schema description coverage, this compensates well, though it could specify format constraints (e.g., numeric range). Since there's only one parameter, the baseline is high.

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 the tool's purpose: 'List subjects (e.g., anime, games) a person is related to (e.g., worked on).' It specifies the verb ('List'), resource ('subjects'), and scope ('a person is related to'), with helpful examples. However, it does not explicitly differentiate from sibling tools like 'get_person_characters' or 'get_person_details', which reduces it from a perfect score.

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 alternatives. It does not mention sibling tools (e.g., 'get_person_characters' for characters instead of subjects) or contexts where other tools might be more appropriate. Usage is implied by the purpose but lacks explicit when/when-not instructions.

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

get_subject_charactersC
List characters related to a subject.

Args:
    subject_id: The ID of the subject.

Returns:
    Formatted list of related characters or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
subject_idYes

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. It mentions that the tool returns a 'Formatted list of related characters or an error message,' which gives some insight into output behavior. However, it lacks details on permissions, rate limits, pagination, or error conditions, which are critical for a read operation with no annotation coverage.

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 well-structured, using clear sections for 'Args' and 'Returns.' It avoids unnecessary details and gets straight to the point. However, the 'Returns' section could be more specific about the format, slightly reducing efficiency.

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 complexity of having no annotations, no output schema, and low schema description coverage, the description is incomplete. It covers basic purpose and parameters but misses behavioral traits, error handling, and differentiation from siblings. For a tool in this context, more detail is needed to ensure reliable agent use.

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?

The description adds minimal semantics beyond the input schema. It explains that 'subject_id' is 'The ID of the subject,' which clarifies the parameter's purpose but doesn't provide format examples, constraints, or context. With 0% schema description coverage, this partial compensation is adequate but not comprehensive, meeting the baseline for moderate schema coverage.

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 the tool's purpose: 'List characters related to a subject.' It specifies the verb ('List') and resource ('characters related to a subject'), making it easy to understand what the tool does. However, it doesn't explicitly differentiate from sibling tools like 'get_character_subjects' or 'get_subject_persons,' which prevents a perfect score.

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 alternatives. With multiple sibling tools like 'get_subject_details,' 'get_subject_persons,' and 'search_characters,' there's no indication of context, prerequisites, or exclusions. This lack of guidance could lead to confusion in tool selection.

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

get_subject_detailsC
Get details of a specific subject (e.g., anime, book, game).

Args:
    subject_id: The ID of the subject.

Returns:
    Formatted subject details or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
subject_idYes

TDQS

C2.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 full burden for behavioral disclosure. It mentions that it returns 'formatted subject details or an error message', which gives some output context, but lacks critical information such as whether this is a read-only operation, authentication requirements, rate limits, or what happens with invalid IDs.

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 sized and front-loaded with the core purpose. The Args and Returns sections are structured clearly, though the 'Returns' section could be more specific about the format of subject details.

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 lack of annotations, no output schema, and 0% schema description coverage, the description is incomplete. It doesn't adequately address behavioral aspects, error conditions, or provide enough context about the subject ID parameter for reliable tool invocation.

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?

The description adds minimal semantics beyond the input schema, which has 0% description coverage. It clarifies that 'subject_id' refers to 'The ID of the subject', but doesn't explain what constitutes a valid subject ID, where to find these IDs, or provide format examples. With only one parameter, this meets the baseline expectation.

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 the tool's purpose with a specific verb ('Get details') and resource ('specific subject'), and provides examples of subject types (anime, book, game). However, it doesn't explicitly differentiate from sibling tools like 'get_character_details' or 'get_person_details' beyond the resource type.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives like 'browse_subjects' or 'search_subjects'. The description only states what it does without indicating appropriate contexts or prerequisites for usage.

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

get_subject_personsB
List persons (staff, cast) related to a subject.

Args:
    subject_id: The ID of the subject.

Returns:
    Formatted list of related persons or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
subject_idYes

TDQS

B3.3/5.0
Behavior2/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 of behavioral disclosure. It mentions the tool 'List persons' and returns a 'Formatted list', but does not specify behavioral traits such as whether it's read-only, if there are rate limits, authentication needs, or what the format entails (e.g., pagination, error handling details). This leaves significant gaps for an agent to understand how to interact with it safely and effectively.

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 appropriately sized and front-loaded, starting with the core purpose in the first sentence, followed by clear sections for 'Args' and 'Returns'. Each sentence earns its place by providing essential information without unnecessary details, making it efficient and easy to parse.

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 tool's low complexity (1 parameter, no output schema, no annotations), the description is somewhat complete but has gaps. It covers the basic purpose and parameter semantics but lacks behavioral transparency and detailed usage guidelines. Without annotations or an output schema, it should do more to explain the return format and operational context, making it only adequate for minimal use.

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?

The description adds meaning by explaining that 'subject_id' is 'The ID of the subject', which clarifies its purpose beyond the schema's basic type ('integer'). However, with 0% schema description coverage and only one parameter, this minimal addition provides some value but does not fully compensate for the lack of schema details, such as valid ranges or examples.

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 the tool's purpose with a specific verb ('List') and resource ('persons related to a subject'), and distinguishes the type of persons ('staff, cast'). However, it does not explicitly differentiate from sibling tools like 'get_person_subjects' or 'get_subject_characters', which handle related but different relationships.

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 by specifying the required 'subject_id' parameter, suggesting it should be used when you have a subject ID to find related persons. However, it does not provide explicit guidance on when to use this tool versus alternatives like 'search_persons' or 'get_person_details', nor does it mention any prerequisites or exclusions.

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

get_subject_relationsC
List related subjects (sequels, prequels, adaptations) for a subject.

Args:
    subject_id: The ID of the subject.

Returns:
    Formatted list of related subjects or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
subject_idYes

TDQS

C2.9/5.0
Behavior2/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 of behavioral disclosure. It states the tool lists related subjects but doesn't describe behavioral traits such as whether it's read-only, pagination behavior, rate limits, error handling, or authentication needs. The mention of 'Returns: Formatted list' hints at output structure but lacks detail, leaving significant 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 appropriately sized and front-loaded, with the core purpose stated first. The 'Args' and 'Returns' sections add structure, though they could be more concise. Every sentence contributes, but the formatting is slightly verbose for such a simple tool.

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 moderate complexity (listing relations), lack of annotations, and no output schema, the description is incomplete. It doesn't explain what 'related subjects' entail beyond examples (sequels, prequels, adaptations), how results are formatted, or error conditions. The agent lacks sufficient context to use the tool effectively without trial and error.

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?

The description adds minimal semantics beyond the input schema. It specifies that 'subject_id' is 'The ID of the subject,' which is slightly more informative than the schema's 'Subject Id' title, but schema description coverage is 0%, and the description doesn't compensate by explaining format, constraints, or examples. With only one parameter, the baseline is 4, but the lack of additional context reduces this to 3.

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 the tool's purpose: 'List related subjects (sequels, prequels, adaptations) for a subject.' It specifies the verb ('list'), resource ('related subjects'), and scope ('for a subject'), distinguishing it from siblings like get_subject_details or search_subjects. However, it doesn't explicitly differentiate from get_subject_characters or get_subject_persons, which also list related entities for a subject.

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 alternatives. It doesn't mention sibling tools like get_subject_characters or get_subject_persons, nor does it specify prerequisites, exclusions, or contextual triggers. The agent must infer usage based on the purpose alone.

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

search_charactersA
Search for characters on Bangumi.

Supported Character Types (integer enum in result):
1: Character, 2: Mechanic, 3: Ship, 4: Organization

Args:
    keyword: The search keyword.
    limit: Pagination limit. Defaults to 30.
    offset: Pagination offset. Defaults to 0.
    nsfw_filter: Optional NSFW filter (boolean). Set to True to include, False to exclude. Requires authorization for non-default behavior.

Returns:
    Formatted search results or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes
limitNo
nsfw_filterNo
offsetNo

TDQS

A3.5/5.0
Behavior3/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 the supported character types (enum values 1-4), pagination behavior with defaults, and authorization needs for nsfw_filter. However, it doesn't cover rate limits, error conditions beyond a generic mention, or detailed response format, leaving gaps in 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.

Conciseness4/5

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

The description is well-structured with clear sections for purpose, args, and returns. It's appropriately sized with no redundant sentences, though the 'Returns' section is vague ('formatted search results or an error message'), which slightly reduces efficiency.

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 annotations and no output schema, the description provides basic purpose and parameters but lacks details on response structure, error handling, and sibling differentiation. For a search tool with 4 parameters and complex enums, it's adequate but has clear gaps in 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?

Schema description coverage is 0%, so the description must compensate. It adds meaning for all parameters: keyword as search term, limit/offset for pagination with defaults, and nsfw_filter with authorization details. This goes beyond the bare schema, though it could specify format constraints (e.g., keyword length).

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 the tool searches for characters on Bangumi, specifying the verb 'search' and resource 'characters'. It distinguishes from siblings like search_persons and search_subjects by focusing on characters, though it doesn't explicitly contrast with them. The mention of supported character types adds specificity.

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 searching characters, but doesn't explicitly state when to use this tool versus alternatives like get_character_details or browse_subjects. It mentions authorization requirements for nsfw_filter, which provides some context, but lacks clear guidance on tool selection among siblings.

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

search_personsA
Search for persons or companies on Bangumi.

Supported Person Types (integer enum in result):
1: Individual, 2: Corporation, 3: Association

Supported Career Filters (string enum):
'producer', 'mangaka', 'artist', 'seiyu', 'writer', 'illustrator', 'actor'

Args:
    keyword: The search keyword.
    limit: Pagination limit. Defaults to 30.
    offset: Pagination offset. Defaults to 0.
    career_filter: Optional filter by person career (list of strings from PersonCareer enum).

Returns:
    Formatted search results or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
career_filterNo
keywordYes
limitNo
offsetNo

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses that the tool returns formatted search results or error messages, and mentions pagination behavior through limit/offset parameters. However, it doesn't cover important behavioral aspects like rate limits, authentication requirements, or what happens with invalid inputs.

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 clear sections for purpose, supported types, career filters, arguments, and returns. It's appropriately sized with no wasted sentences, though the career filter list could be slightly more concise.

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 search tool with 4 parameters, no annotations, and no output schema, the description provides good parameter documentation but lacks important context. It doesn't explain result format details, error conditions, or how results are ordered. The mention of 'formatted search results' is vague without an output schema.

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 value beyond the input schema, which has 0% description coverage. It explains the meaning of career_filter with a complete list of valid values, clarifies that keyword is the search term, and explains that limit/offset are for pagination with their defaults. This fully compensates for the schema's lack of descriptions.

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 the tool searches for persons or companies on Bangumi, providing a specific verb ('search') and resource ('persons or companies'). However, it doesn't explicitly differentiate from sibling tools like search_characters or search_subjects, which search different entity types.

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

Usage Guidelines2/5

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

No guidance is provided about when to use this tool versus alternatives like search_characters or search_subjects. The description mentions what the tool does but offers no context about appropriate use cases or exclusions.

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

search_subjectsB
Search for subjects on Bangumi.

Supported Subject Types (integer enum):
1: Book, 2: Anime, 3: Music, 4: Game, 6: Real

Supported Sort orders (string enum):
'match', 'heat', 'rank', 'score'

Args:
    keyword: The search keyword.
    subject_type: Optional filter by subject type. Use integer values (1, 2, 3, 4, 6).
    sort: Optional sort order. Defaults to 'match'.
    limit: Pagination limit. Max 50. Defaults to 30.
    offset: Pagination offset. Defaults to 0.

Returns:
    Formatted search results or an error message.
ParametersJSON Schema
NameRequiredDescriptionDefault
keywordYes
limitNo
offsetNo
sortNomatch
subject_typeNo

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations provided, the description carries full burden. It discloses key behavioral traits: it's a search operation (implied read-only), mentions pagination limits ('Max 50'), default values, and return format ('Formatted search results or an error message'). However, it doesn't cover rate limits, authentication needs, or detailed error conditions.

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 clear sections for purpose, supported types/sorts, args, and returns. It's appropriately sized with no redundant information. Every sentence adds value, though the formatting could be slightly more front-loaded.

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 search tool with 5 parameters, 0% schema coverage, no annotations, and no output schema, the description does a decent job. It explains parameters and return format but lacks details on result structure, error types, or integration with sibling tools. It's minimally adequate but has clear gaps.

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 description coverage is 0%, so the description must compensate. It adds significant value by explaining all 5 parameters: keyword purpose, subject_type mapping (integer to type names), sort options with defaults, and pagination semantics (limit/offset with defaults and max). This goes well beyond the bare 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 the tool's purpose: 'Search for subjects on Bangumi.' It specifies the verb ('search') and resource ('subjects'), but doesn't explicitly differentiate from sibling tools like 'browse_subjects' or 'search_characters' beyond the resource type.

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 alternatives like 'browse_subjects' or other search tools. It mentions supported subject types and sort orders but doesn't explain when to apply these filters or choose this tool over other subject-related tools.

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. 17 tool updatesv1.0.0
    • First observedbrowse_subjects
    • First observedget_character_details
    • First observedget_character_persons
    • First observedget_character_subjects
    • First observedget_daily_broadcast
    • First observedget_episode_details
    • First observedget_episodes
    • First observedget_person_characters
    • First observedget_person_details
    • First observedget_person_subjects
    • First observedget_subject_characters
    • First observedget_subject_details
    • First observedget_subject_persons
    • First observedget_subject_relations
    • First observedsearch_characters
    • First observedsearch_persons
    • First observedsearch_subjects

TDQS

A3.5/5.0

Scored across 17 tools

Disambiguation5/5

Every tool has a clearly distinct purpose with no ambiguity. Tools are organized by entity type (subject, character, person, episode) and action (browse, get, search), making it easy to differentiate between them. For example, get_subject_details retrieves details, while get_subject_characters lists related characters, avoiding overlap.

Naming Consistency5/5

Tool names follow a highly consistent verb_noun pattern throughout, using snake_case uniformly. All tools start with 'browse_', 'get_', or 'search_', followed by the entity name (e.g., 'subjects', 'character_details'), making them predictable and readable. There are no deviations in naming conventions.

Tool Count4/5

With 17 tools, the count is slightly high but reasonable for a comprehensive media database server covering subjects, characters, persons, and episodes. It includes essential operations like browsing, searching, and retrieving details, though it might feel a bit heavy compared to simpler APIs. The tools are well-scoped, with each serving a distinct function.

Completeness5/5

The tool surface provides complete coverage for the Bangumi TV domain, including CRUD-like operations for browsing, searching, and retrieving details across all entity types (subjects, characters, persons, episodes). It supports relationships between entities (e.g., get_subject_characters) and includes specialized tools like get_daily_broadcast, leaving no obvious gaps for agent workflows.

Maintenance

ActivityInactive
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    F
    maintenance
    An MCP server that enables users to search Bilibili videos, access trending rankings, and retrieve detailed information about videos, content creators, and anime schedules. It allows AI applications to interact directly with Bilibili content via simple API interfaces.
    72 npm
    191
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    An MCP server for anime and manga discovery, enabling search, detail retrieval, franchise watch order, seasonal schedule, character lookups, rankings, and studio filmography via natural language.
    78 npm
    1
    Apache 2.0