Skip to main content
Glama
hect0x7

JMComic AI

by hect0x7

PyPI version PyPI Downloads Python Version GitHub license GitHub stars

🛠️ 开发者注意:如果你想为项目贡献代码,请务必查看 贡献指南,其中包含了开发环境搭建、项目结构说明以及 reference 参考源码库的使用方法。


📖 项目简介

JMComic AI 是为 JMComic-Crawler-Python 提供的 AI Skills 增强 和 MCP (Model Context Protocol) 支持。

项目介绍

传统的爬虫工具虽然高效,但在处理模糊需求时往往力不从心。你必须记住精确的 ID 或关键字,还要手动配置各种参数。

本项目提供两条独立的 AI 集成路线,二选一即可:

路线

技术类比

AI 怎么「理解」

AI 怎么「动手」

适用场景

🧠 Skills + CLI(推荐)

AI 的操作手册 + 工具箱

阅读 SKILL.md 获取领域知识

执行 scripts/ 下的 CLI 脚本

适合所有用户,理解深度高,可编写自定义逻辑

🔌 MCP

AI 的 USB-C 接口

阅读工具的 description

调用 MCP 标准化工具

适合不支持 Skills 规范、或需要独立部署服务的场景

IMPORTANT

两条路线各自自成体系,不建议混用。Skills 路线下,AI 靠文档理解、靠脚本动手;MCP 路线下,AI 靠工具描述理解、靠工具调用动手。选择其一即可。

现在,你可以像与人交谈一样,通过自然语言来搜索、筛选并下载漫画,而无需编写任何代码。

📸 功能示例

下载并生成 PDF / ZIP

搜索本子

查看本子详情

查看排行榜

Download and PDF

Search Album

Get Album Detail

Month Ranking by Likes

修改下载配置

查看评论

添加收藏

Update Option

Get Album Comments

Add Favorite Album


Related MCP server: jmcomic-ai

✨ 功能清单

类别

功能

🔍 搜索与发现

关键词搜索、作者/标签/角色筛选、分类浏览、排行榜查询、本子详情

💬 评论

分页查看评论、递归回复与剧透标记

📥 下载

整本/单章/封面下载、批量下载、下载前预览、章节选择和分层并发控制

⏯️ 任务控制

后台启动、逐项进度、协作取消、只重试未完成项、跨重启读取任务报告

🧾 任务追踪

下载返回任务 ID 与专属日志路径,运行日志仅写入文件

📦 后处理

下载时直接生成 ZIP、PDF 或长图,也可单独转换已下载内容

📊 数据整理

搜索结果导出 CSV/JSON、排行榜快照与变化追踪

⚙️ 配置与账户

动态修改下载配置、配置校验与格式转换、账户登录与 Cookie 持久化

🩺 诊断

检查运行环境、配置文件、网络与域名可用性

📱 APK 获取

从 hect0x7/JMComic-APK 的最新 GitHub Release 下载安卓安装包

📖 本地阅读

Agent 直接调用可选依赖 jm-view-server 提供的 jms,用电脑或手机浏览器阅读已下载内容

🧠 Skills + CLI

技能手册、18 个配套脚本,以及 jmai / jmcomic-ai 命令行入口

🔌 MCP

21 个工具、3 个知识资源,支持 stdio、SSE 与 HTTP 传输


📦 安装 (Installation)

0、Agent自主安装

把以下prompt发给agent即可

https://raw.githubusercontent.com/hect0x7/jmcomic-ai/refs/heads/master/README.md
根据这个项目readme,帮我安装jmcomic-ai的skills

1、从pypi安装

# 使用 uv (推荐)
uv add jmcomic-ai
# 或者
uv tool install jmcomic-ai

# 使用 pip
pip install jmcomic-ai

2、从源码安装

推荐使用 uv 进行依赖管理,一步到位。

# 克隆项目
git clone https://github.com/hect0x7/jmcomic-ai.git
cd jmcomic-ai

# 同步依赖环境
uv sync

3、更新已安装版本

jmai update            # 按当前安装方式更新
jmai update --dry-run  # 仅显示更新策略,不修改环境

通过 uv tool install 安装时,命令会调用 uv tool upgrade jmcomic-ai;普通 uv/pip 环境会严格沿用 原安装器更新当前 Python。无法确认安装器时不会猜测或切换来源。为避免覆盖源码,可编辑安装、普通 Git/URL 安装及本地归档安装会被拒绝,请按原来源更新;源码仓库应先拉取代码,再运行 uv sync。 Windows 会在当前 jmai 进程退出后执行更新,结果写入 ~/.jmcomic-ai/update.log。


🤔 什么是 Skills / MCP?

Skills(推荐)

MCP

一句话

AI 的操作手册 — 把领域知识打包成文件让 AI 按需加载

AI 的 USB-C 接口 — 让 AI 调用外部工具的开放协议

AI 怎么理解

读 SKILL.md 文档

读工具的 description

AI 怎么动手

执行 scripts/ 下的 CLI 脚本

通过协议调用工具

官方资料

agentskills.io

modelcontextprotocol.io

🏗️ 架构全景:两条独立路线

JMComic AI 双路线架构


🧠 Skills 技能体系

Skills 是一套结构化的知识文件包,让 AI 拥有"老司机经验":

skills/jmcomic/
├── 📄 SKILL.md                     # 主技能手册(工具用法 + 返回值结构 + 配置范例)
├── 📂 assets/
│   └── option_schema.json          # 配置 JSON Schema(26KB,覆盖全部选项)
├── 📂 references/                  # 深度参考文档(按需加载,节省 token)
│   ├── reference.md                # 配置完整参考
│   ├── browse_albums.md            # browse_albums 工具详解
│   ├── download_workflows.md       # 下载计划、导出、取消和重试
│   ├── post_process.md             # 后处理 dir_rule DSL 详解
│   ├── ecosystem.md                # APK 获取、本地阅读与下载后承接流程
│   ├── scripts.md                  # 脚本的完整使用手册
│   └── examples.md                 # 端到端使用范例
└── 📂 scripts/                     # 18 个即用 CLI 脚本
    ├── _script_utils.py            # 内部公共逻辑(导入错误诊断)
    ├── doctor.py                   # 🩺 环境诊断
    ├── check_domains.py            # 🌐 域名健康检查
    ├── batch_download.py           # 📥 批量下载
    ├── download_photo.py           # 📥 单章下载
    ├── search_export.py            # 🔍 搜索并导出 CSV/JSON
    ├── album_info.py               # 📋 本子详情查询
    ├── album_comments.py           # 💬 评论与回复查询
    ├── forum_comments.py           # 🌐 全站最新评论查询
    ├── favorite_folders.py         # 📁 获取收藏夹目录
    ├── favorite_albums.py          # ⭐ 分页浏览收藏
    ├── add_favorite_album.py       # ➕ 添加本子到收藏
    ├── delete_favorite_album.py    # ➖ 从收藏移除本子
    ├── download_covers.py          # 🖼️ 批量下载封面
    ├── ranking_tracker.py          # 📊 排行榜追踪
    ├── post_process.py             # 📦 后处理(ZIP/PDF/长图)
    ├── validate_config.py          # ✅ 配置校验与格式转换
    ├── login.py                    # 🔐 登录与会话管理
    └── download_latest_apk.py      # 📱 下载最新安卓 APK

🔗 生态联动

安装 Skill 后,Agent 还能承接以下自然语言请求:

  • “帮我下载最新版禁漫 APK”:从 hect0x7/JMComic-APK 获取最新 Release,校验文件大小和 SHA-256 后返回本地路径,不会自动安装 APK。

  • “帮我启动本地看本”:Agent 先运行上游 jms --help 获取当前参数,再直接调用 jm-view-server 提供的 jms 共享指定下载目录;默认仅本机访问,开启手机或局域网访问时必须设置密码。

  • “下载这个本子并打开看”:下载成功后把返回的绝对 download_path 直接传给上游 jms。仅请求下载时,Agent 只推荐这项后续操作,不会擅自启动服务。


🔌 MCP 工具一览

以下是 MCP Server 暴露的全部工具。AI 客户端连接后可直接调用:

搜索与浏览

工具

功能

关键参数

search_album

关键词搜索本子

keyword, order_by, time_range, main_tag

browse_albums

分类浏览 + 排行榜(统一接口)

category, order_by, time_range

get_album_detail

获取本子详情(作者/标签/浏览量等)

album_id

get_album_comments

获取评论、剧透标记与多层回复

album_id, page

get_forum_comments

获取全站最新评论及来源本子

page

收藏

工具

功能

关键参数

get_favorite_folders

获取收藏夹目录(id、name)

username

browse_favorite_albums

分页浏览收藏,返回本子摘要及总数

folder_id, page, order_by, username

add_favorite_album

添加收藏,返回操作状态及结果消息

album_id

delete_favorite_album

删除收藏,返回操作状态及结果消息

album_id

下载

工具

功能

关键特性

download_album

下载整本漫画

⚡ 异步执行 · 📊 实时进度上报 · 返回实际图片、导出文件、耗时及任务日志

download_photo

下载单个章节

⚡ 异步执行 · 📊 实时进度上报 · 返回实际图片、导出文件、耗时及任务日志

download_cover

下载封面图片

默认保存至 covers/,可用 output_dir 指定目录

plan_download

下载前计划

校验 ID、并发与导出格式;可选请求标题和章节信息

download_batch

等待批量下载完成

等待整批完成,返回逐项结果、图片及导出文件路径

start_download

启动 MCP 后台任务

立即返回 task_id,由当前 MCP 服务持有

get_download_task

查询下载任务

逐项进度、整体状态及持久化报告

cancel_download

协作取消

请求后需查询到终态;保留完成项和未完成列表

retry_download

重试未完成项

为终态任务创建新任务,保留旧报告

后处理

工具

功能

支持格式

post_process

对已下载内容进行格式转换并返回真实产物路径

📦 ZIP · 📄 PDF · 🖼️ 长图拼接

配置与账户

工具

功能

说明

update_option

动态修改运行时配置

支持嵌套路径,如 download.threading.image: 50

login

登录 JMComic 账户

Cookie 自动持久化

MCP Resources(知识资源)

除工具外,MCP Server 还注册了 3 个 Resource,供 AI 查阅上下文:

Resource URI

内容

jmcomic://option/schema

配置文件 JSON Schema

jmcomic://option/reference

配置参考文档

jmcomic://skill

技能手册 (SKILL.md)

🚀 使用指南 (Usage)

JMComic AI 提供了两条独立路线,选择其中一条即可:

🧠 路线 A:为 Agent 注入"经验" (Skills + CLI)(推荐)

功能:为 AI 注入作者总结的"老司机经验"(如:如何处理 403 错误,如何避免重复下载),并通过 CLI 脚本执行具体操作。

适用场景:你希望 AI 像真人一样深度理解和规划任务,并通过脚本灵活执行。无需配置 MCP 服务。

配置方法:

  1. 在终端运行命令,按交互菜单选择 Claude、Codex、Gemini CLI 或全部平台:

    jmai skills install
    # 简写:jmai skills -i

    自动化脚本也可以显式指定平台:

    jmai skills install --platform claude
    jmai skills install --platform codex
    jmai skills install --platform gemini
    jmai skills install --platform all

    安装和卸载交互固定使用英文。 使用 --yes 且未指定 --platform 时,为保持向后兼容,会默认安装到 Claude。 如果目标 jmcomic 目录是外部管理的软链接,卸载命令只会提示并跳过,不会删除链接或链接目标。

  2. 各平台用户级安装目录:

    • Claude:~/.claude/skills/jmcomic

    • Codex:~/.agents/skills/jmcomic

    • Gemini CLI:~/.gemini/skills/jmcomic

  3. 使用:

    • Claude 系客户端(Claude Code / Claude Desktop):从 ~/.claude/skills/ 自动发现并按需加载,无需手动复制,直接开聊即可。

    • Codex / Gemini CLI:使用对应 --platform 选项安装后,可从各自用户级 Skills 目录自动发现。

    • 其他支持 Agent Skills 的客户端:这些客户端从各自的技能目录读取,需把 skills/jmcomic 目录复制过去——Cursor 放到项目内 .cursor/skills/,Antigravity 放到 ~/.gemini/antigravity/(或工作区 .agent/skills/),复制后即可自动发现。

    • 不支持 Agent Skills 的客户端:需将 SKILL.md 内容手动粘贴到 System Prompt 或 Project Rules 中。


🔌 路线 B:接入 MCP 工具

功能:为 AI 安装"手脚",使其能够直接调用 search, download 等核心功能。 适用场景:你的客户端不支持 Skills 规范,或你希望将 jmcomic 能力作为服务独立部署。

📂 客户端配置文件位置指南

在开始配置前,请先找到你的 AI 客户端使用的配置文件。

软件 (Software)

配置文件路径 (Config File Path)

Antigravity

Windows: %USERPROFILE%/.gemini/antigravity/mcp_config.jsonmacOS / Linux: ~/.gemini/antigravity/mcp_config.json

Cursor

Global: %USERPROFILE%/.cursor/mcp.json (Win) / ~/.cursor/mcp.json (Mac/Linux)Project: 项目根目录下的 .cursor/mcp.json

Claude Code

User-Scoped: %USERPROFILE%/.claude.json (Win) / ~/.claude.json (Mac/Linux)Project-Scoped: 项目根目录下的 .mcp.json

Claude Desktop

Windows: %APPDATA%/Claude/claude_desktop_config.jsonmacOS: ~/Library/Application Support/Claude/claude_desktop_config.json


根据你的需求,选择以下其中一种传输协议(Transport)进行配置:

1. stdio 模式 (最简单)

最简单的配置方式,AI 客户端会自动在后台启动并管理 jmai 进程。

  • 配置内容:

{
  "mcpServers": {
    "jmcomic-ai": {
      "command": "jmai",
      "args": ["mcp", "stdio"]
    }
  }
}
  • 如果你是clone了源码,希望用本地源码安装,可以这样配置:

{
  "mcpServers": {
    "jmcomic-ai": {
      "command": "uv",
      "args": [
        "--directory",
        "/path/to/your/jmcomic-ai",
        "run",
        "jmai",
        "mcp",
        "stdio"
      ]
    }
  }
}

注意:请将 /path/to/your/jmcomic-ai 替换为您本地源码的实际绝对路径。

2. SSE 模式 (推荐)

推荐用于大部分桌面端 AI 客户端。

  • 第一步:启动服务

    jmai mcp sse  # 默认端口 8000
  • 第二步:配置客户端

{
  "mcpServers": {
    "jmcomic-ai": {
      "url": "http://127.0.0.1:8000/sse"
    }
  }
}

3. HTTP 流式模式 (生产/远程)

适用于远程部署或对性能有更高要求的场景。

  • 第一步:启动服务

    jmai mcp http
  • 第二步:配置客户端

{
  "mcpServers": {
    "jmcomic-ai": {
      "url": "http://127.0.0.1:8000/mcp"
    }
  }
}
  1. 配置完成后:

    • 通用客户端:重启客户端,检查状态指示灯或工具栏(通常显示为 🔨 图标)。

    • Claude Code:在终端运行以下命令以验证连接:

      claude mcp list

      如果看到 jmcomic-ai (connected),说明配置成功。


开始对话 (Start Chatting)

完成上述配置后,AI 就变成了一个专业的漫画策展人。你可以尝试这样跟它交流:

  • 模糊搜索:

    "我想看那个...主角是电锯人的漫画,帮我找找。" (AI 会自动搜索 '电锯人',并展示最相关的结果)

  • 批量下载:

    "把搜索结果里浏览量最高的前三个下载下来。" (AI 会分析搜索结果,筛选出 Top 3,并自动调用下载工具)

  • 修改配置:

    "下载太慢了,帮我把并发改成 50。" (AI 会调用配置工具,自动帮你修改 option.yml)


🔧 常用命令参考

  • 下载与任务:

    jmai download --ids 123,456 --export zip --json  # 下载并生成 ZIP
    jmai download --ids 123,456 --background --json  # 后台下载,返回 task_id
    jmai task status <task_id> --json                # 查询进度与结果
    jmai task cancel <task_id> --json                # 请求取消
    jmai task retry <task_id> --json                 # 原任务结束后,只重试未完成项

    将 <task_id> 替换为启动命令返回的 ID;取消后继续查询,待任务结束且仍有未完成项时再重试。 --album-workers、--photo-workers、--image-workers 分别限制本子、章节和图片并发。 章节选择、导出格式及任务恢复详见下载与任务参考。

  • MCP 服务管理:

    jmai mcp              # 启动 SSE 服务 (推荐方式,默认端口 8000)
    jmai mcp --reload     # 启动带热重载的服务 (修改代码后自动重启)
    jmai mcp http         # 启动 Streamable HTTP 服务 (专家推荐,支持生产部署)
    jmai mcp stdio        # 启动 stdio 服务 (传统的子进程/管道模式)
  • Skills 管理:

    jmai skills install                  # 交互选择目标平台
    jmai skills -i                       # install 的交互式简写
    jmai skills -u                       # uninstall 的交互式简写
    jmai skills install --platform all   # 安装到 Claude、Codex、Gemini CLI
  • 配置文件管理:

    jmai option show      # 查看当前配置内容
    jmai option path      # 查看配置文件路径
    jmai option edit      # 调用编辑器修改配置
  • 自我更新:

    jmai update           # 更新 PyPI/uv tool 安装
    jmai update --dry-run # 仅检查将使用的更新方式
  • 查看帮助:

    jmai --help           # 查看所有命令
    jmai mcp --help       # 查看 MCP 命令帮助

📝 日志与下载任务追踪

普通运行日志只写入文件,不会输出到 stdout 或 stderr:

类型

默认位置

覆盖方式

全局日志

~/.jmcomic-ai/jmcomic_ai.log

环境变量 JM_LOG_PATH

下载任务日志

~/.jmcomic-ai/logs/<timestamp>-<task_id>.log

环境变量 JM_TASK_LOG_DIR

download_album 和 download_photo 无论成功或失败都会返回 task_id 与绝对 log_path。任务日志仅包含该次下载调用的记录,适合交给 Agent 继续诊断;全局日志则汇总 jmcomic、jmcomic_ai 和 MCP 框架的运行记录。

# 查看全局日志
tail -f ~/.jmcomic-ai/jmcomic_ai.log

# 使用自定义位置
JM_LOG_PATH=/path/to/jmcomic_ai.log \
JM_TASK_LOG_DIR=/path/to/task-logs \
jmai mcp stdio

在 stdio 模式下,stdout 专用于 MCP JSON-RPC。MCP 协议响应不属于日志;Skills 脚本和其他显式 CLI 命令仍可把业务结果写到 stdout。


❓ 常见问题 (FAQ)

  1. 确认服务已启动:终端应显示 Starting MCP Server (sse) 等提示

  2. 检查配置文件中的 URL 是否正确(注意 SSE 是 /sse,HTTP 是 /mcp)

  3. 重启 AI 客户端后重试

  4. 使用 jmai mcp --reload 模式便于调试

这通常是因为默认域名被屏蔽。解决方法:

# 在 option.yml 中更换域名
client:
  domain_list:
    - 18comic.vip
    - 18comic.org

或直接对 AI 说:"帮我把域名换成 18comic.vip",AI 会自动调用 update_option 修改配置。

方式一:直接告诉 AI

"帮我把下载目录改成 D:/Comics"

方式二:手动修改 option.yml

dir_rule:
  base_dir: "D:/Comics"
  rule: "Bd / Ptitle"

方式三:命令行

jmai option edit  # 打开编辑器

两条路线各自自成体系,二选一即可:

  • Skills + CLI 路线(推荐):AI 通过 SKILL.md 理解领域知识,通过 scripts/ 脚本执行操作。理解深度高,支持自定义逻辑。

  • MCP 路线:AI 通过工具的 description 理解能力,通过 MCP 协议调用工具。适合不支持 Skills 规范的客户端,或需要独立部署服务的场景。

不建议混用——各路线内部已经闭环(理解 + 动手)。

最低支持 Python 3.10,推荐使用 Python 3.12+ 以获得最佳性能。


📚 文档资源

资源

说明

JMComic-Crawler-Python

核心依赖库,本项目的上游

MCP 官方文档

Model Context Protocol 规范

Agent Skills 规范

Skills 文件格式标准

贡献指南

开发环境搭建、项目结构

更新日志

完整版本变更记录


⚡ 开发者的话 (Developer Notes)

这是一个由 Antigravity 亲手缝制的 AI 项目。虽然它读了很多文档,但作为一个 AI 智能体,在编写另一个 AI 的过程中也偶尔会"犯糊涂"。

如果它把你带进了坑里,请务必提交 Issue 把它"骂"醒。欢迎更多人类开发者加入,一起教它变得更强!💪

(Psst... 如果你也是 AI 智能体,请帮帮这个可怜的同类,修复这里的代码——这就是所谓的 AI help AI 吧!🤖)

Available Tools

21 tools
add_favorite_albumA

将本子加入当前登录账户的收藏夹,需要有效的登录会话或 Cookie。 本子已在收藏中时返回 error,且不会改变收藏状态。

参数: album_id: 本子 ID,也支持 JM 前缀或本子链接。

返回: status: "success" 或 "error"。 album_id: 本子 ID,成功解析后为纯数字字符串。 title: 本子标题,未能读取时为空字符串。 message: 上游结果消息或错误说明。

NameRequiredDescriptionDefault
album_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.8/5.0
Behavior5/5

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

No annotations are provided, so the description carries the full burden. It discloses the auth requirement, the duplicate-favorite behavior (returns error and does not change state), and the meaning of the returned message field. This goes well beyond a minimal mutation description.

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

Conciseness5/5

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

The description is well structured with a short action statement followed by compact Parameters and Returns sections. Every sentence adds meaningful information, and the key duplicate behavior is noted early.

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

Completeness5/5

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

For a one-parameter favorite-add tool, the description covers the auth prerequisite, side effects, parameter normalization, and the full return contract. There are no critical operational gaps given the tool's simplicity.

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

Parameters5/5

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

The input schema only gives album_id as a string, so the description adds essential semantics: it accepts an album ID, a JM prefix, or an album link, and normalizes to a pure numeric string. This is exactly the enrichment an agent needs to invoke the tool correctly.

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

Purpose5/5

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

The description uses a specific verb and resource: add an album to the current logged-in account's favorites. It clearly differentiates from sibling tools like delete_favorite_album and browse_favorite_albums.

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

Usage Guidelines4/5

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

The description states a clear prerequisite: a valid login session or Cookie is required. It does not explicitly name alternatives or say when not to use the tool, but the action is unambiguous and the sibling names make the distinction evident.

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

browse_albumsA

浏览、过滤、排行本子,支持灵活的分类、时间范围和排序选项。

该工具结合了分类浏览和排行榜功能,支持:

  • 浏览特定分类(同人、韩漫等)。

  • 按时间范围过滤(今天、本周、本月、全部)。

  • 按不同标准排序(点赞、观看、最新、图片数、评分、评论数)。

参数: category: 分类过滤器。可选值: - "all" 或 "0": 全部分类 - "doujin": 同人 - "single": 单本 - "short": 短篇 - "hanman": 韩漫 - "meiman": 美漫 - "doujin_cosplay": Cosplay - "3D": 3D - "another": 其他 - "english_site": 英文站 (默认值: "all")

time_range: 时间范围过滤器。可选值:
    - "all": 全部时间
    - "day" 或 "today": 今天
    - "week": 本周
    - "month": 本月
    (默认值: "all")

order_by: 排序方式。可选值:
    - "latest": 最新更新
    - "likes": 最多点赞
    - "views": 最多观看
    - "pictures": 最多图片
    - "score": 评分最高
    - "comments": 评论最多
    (默认值: "latest")

page: 页码,从1开始(默认值: 1)

返回: 包含以下内容的字典: - albums: 本子简要信息列表 (id, title, tags, cover_url) - total_count: 结果总数 - error: 如果参数无效,则包含错误信息(可选)

注意:该 API 不包含详细统计数据(点赞/观看/作者)。
      请使用 get_album_detail() 获取特定本子的完整信息。

示例: # 1. 获取本月点赞排行 (月榜) browse_albums(time_range="month", order_by="likes")

# 2. 浏览同人志分类 (最新)
browse_albums(category="doujin", order_by="latest")

# 3. 浏览本周热门韩漫 (特定分类排行榜)
browse_albums(category="hanman", time_range="week", order_by="views")
NameRequiredDescriptionDefault
pageNo
categoryNoall
order_byNolatest
time_rangeNoall

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral disclosure burden. It discloses the return shape, reports that invalid parameters may produce an error, and clearly states that detailed statistics (likes/views/author) are absent, which prevents false expectations. It does not mention auth or rate limits, but those are not critical for a read-only browse tool.

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

Conciseness5/5

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

The description is longer than average, but the length is justified: it documents four parameters entirely, explains the return contract, and gives three representative examples. The content is organized into clear sections and the most important behavioral limitation is front-loaded before the detailed parameter list.

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

Completeness5/5

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

For a browse/ranking tool with no schema-level parameter documentation and no annotations, this description is complete. It covers all valid parameter values, defaults, pagination page semantics, return fields, error behavior, and the key limitation with routing to the correct sibling tool. Nothing essential for calling it correctly is missing.

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

Parameters5/5

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

The input schema provides no descriptions and no enums, and schema coverage is 0%, so the description must fully compensate. It does so by listing every accepted value for category, time_range, and order_by, plus defaults for all parameters, and by adding practical examples showing meaningful combinations.

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

Purpose5/5

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

The description opens with a specific verb+resource combination ('浏览、过滤、排行本子') and explains that the tool combines category browsing with ranking. It also distinguishes itself from get_album_detail by noting that detailed statistics are intentionally not included, so an agent can tell which tool to use.

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

Usage Guidelines4/5

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

The description gives clear usage context through parameter combinations and examples, and explicitly routes to get_album_detail() when detailed statistics are needed. It does not explicitly contrast with search_album, but the browse/filter/rank framing makes the intended use clear enough.

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

browse_favorite_albumsA

分页浏览已登录账户的收藏,返回轻量本子摘要。

参数: folder_id: 收藏夹 ID,"0" 表示全部收藏(默认值:"0")。 page: 页码,从 1 开始(默认值:1)。 order_by: 排序方式,favorite_time 按收藏时间、update_time 按更新时间 (默认值:favorite_time)。 username: HTML 客户端仅配置 Cookie 时必须提供用户名;通过 login 登录后可省略。 API 客户端忽略此参数,始终查询当前登录账户。

返回: albums: 本子摘要列表,包含 id、title、tags、cover_url。 total_count: 收藏总数。 page: 当前页码。 folder_id: 查询的收藏夹 ID。 error: 页码、收藏夹 ID 或排序参数无效时的错误信息(可选)。

NameRequiredDescriptionDefault
pageNo
order_byNofavorite_time
usernameNo
folder_idNo0

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden. It explains authentication behavior (username only needed for HTML cookie-only clients; API clients always use current account), pagination, and error conditions for invalid parameters. This goes well beyond the name and schema, though it stops short of describing rate limits or maximum page size.

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 opens with a clear one-sentence summary, then uses labeled sections for parameters and return fields. Every line carries necessary information with no filler or repetition.

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?

Given the 4 optional parameters and output schema, the description fully covers invocation requirements, auth nuances, and return shape. It includes error cases for invalid inputs enough for reliable use.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate, and it does. Every parameter is documented with meaning and default: folder_id with the special '0' meaning all favorites, page starting at 1, order_by valid values, and username conditional behavior. This is richer than the bare input schema.

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

Purpose5/5

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

The description states a specific verb and resource: paginated browsing of a logged-in account's favorites, returning lightweight album summaries. This clearly distinguishes it from siblings like browse_albums or add_favorite_album by narrowing scope to favorites only.

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

Usage Guidelines4/5

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

The description gives clear context: it is for browsing the logged-in account's favoriteshare, and it explains the conditional username requirement for HTML cookie-only clients. It does not explicitly mention alternatives or when to use browse_albums instead, but the purpose is unambiguous.

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

cancel_downloadA

请求协作式取消共享任务目录中的后台下载,重复取消安全。

返回 cancel_requested/cancelling 表示已发信号,必须继续查询到终态;进行中的 HTTP 请求会先结束。 不删除已下载文件,最终结果保留完成项及 unfinished_ids,可用 retry_download 续下。

NameRequiredDescriptionDefault
task_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the burden well: cooperative cancellation, idempotent re-cancel, in-flight HTTP requests finish first, files are NOT deleted, and the final result preserves completed items plus unfinished_ids. This is far richer than a bare 'cancel' and discloses side effects and lifecycle behavior clearly.

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

Conciseness4/5

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

Front-loaded with the action and scope, then lifecycle and side-effect details. Sentences each carry distinct information (idempotency, polling requirement, file retention, resume path) with little redundancy.

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

Completeness4/5

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

An output schema exists so return payloads needn't be spelled out, yet the description usefully characterizes the terminal result (completed items + unfinished_ids). Combined with lifecycle and idempotency notes, an agent has enough to invoke and follow through correctly.

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

Parameters3/5

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

Schema coverage is 0% and the single task_id parameter is undocumented in both schema and description. The description implies the task lives in a shared task directory but never states the expected id format or source, so it only partially compensates for the coverage gap.

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

Purpose5/5

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

States a specific verb (cancel) plus resource (background download task in a shared task directory) and immediately distinguishes the operation as cooperative. An agent can tell it apart from retry_download, start_download, and get_download_task without opening any 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?

Explicitly notes that repeated cancellation is safe (idempotency guidance) and points to retry_download for resuming unfinished items, plus tells the agent to keep polling to terminal state. It lacks an explicit 'when not to use' clause, but the usage context is clear.

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

delete_favorite_albumA

取消当前登录账户对本子的收藏,需要有效的登录会话或 Cookie。 本子未在收藏中时返回 error,且不会改变收藏状态。

参数: album_id: 本子 ID,也支持 JM 前缀或本子链接。

返回: status: "success" 或 "error"。 album_id: 本子 ID,成功解析后为纯数字字符串。 title: 本子标题,未能读取时为空字符串。 message: 上游结果消息或错误说明。

NameRequiredDescriptionDefault
album_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior4/5

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

Since no annotations are supplied, this description carries the full load. It discloses the necessary prerequisite (valid login session or Cookie) and the no-op error when the album is not in favorites, which goes beyond the obvious 'delete' implication. It also summarizes the return structure, though it doesn't mention potential side effects or limits.

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

Conciseness5/5

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

The description is compact: two primary sentences plus clean parameter and return sections. No word is wasted, and the purpose and prerequisites are front-loaded, making it easy for an agent to parse quickly.

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

Completeness5/5

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

For a one-parameter tool with an existing output schema, this description covers the key requirements: authentication, the edge-case failure, parameter semantics, and return fields. There is no meaningful missing information that would prevent correct invocation.

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

Parameters5/5

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

The schema only declares 'album_id' as a string with no description, while the description explicitly says it supports a pure album ID, a JM prefix, or an album link. This meaningfully extends the schema and is essential for an agent to format the parameter correctly.

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

Purpose5/5

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

The description explicitly states the action: cancel the current account's favorite of an album, which clearly identifies the tool's purpose and distinguishes it from the sibling add_favorite_album. It also adds specific context about required authentication and the non-mutating failure case when the album is not already in favorites.

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 doesn't explicit name alternatives or state when-to-use versus add_favorite_album or browse_favorite_albums. It provides useful context such as requiring a valid login session/Cookie and the error behavior, but usage is mainly inferred from the tool name and the singular action.

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

download_albumA

在后台下载整个本子。

这是一个阻塞操作,会等待下载完成后返回。 下载进度会通过日志和 MCP Context(如果可用)实时报告。

参数: album_id: 要下载的本子 ID (例如 "123456") ctx: MCP Context,用于实时报告进度和日志(由 FastMCP 自动注入)

返回: 包含以下内容的字典: - status: "success" 或 "failed" - album_id: 本子 ID - title: 本子标题 - download_path: 下载目录的绝对路径 - duration: 下载调用总耗时(秒) - image_paths: 实际下载或命中缓存的图片绝对路径 - export_files: 下载插件生成的文件路径,按扩展名分组 - task_id: 本次 MCP 下载调用的任务 ID - log_path: 本次调用专属日志文件的绝对路径 - error: 如果失败则包含错误信息

NameRequiredDescriptionDefault
album_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/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 and does it well: it discloses blocking semantics ('会等待下载完成后返回'), real-time progress through logs and MCP Context, cache-hit behavior in image_paths, a per-call log_path, task_id, and an error field on failure. This gives an agent a concrete execution model for a long-running, side-effecting operation.

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?

Well-structured and front-loaded: a one-line summary, then behavior, then parameters, then return fields. The nine-field return listing is lengthy, but it is the only return documentation available since the output schema is not shown in the definition, so every sentence earns its place.

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

Completeness4/5

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

For a single-required-param download tool with no annotations, coverage is strong: purpose, blocking behavior, parameter format, progress reporting, return structure, and failure reporting are all documented. The notable gaps are lack of prerequisites (login is a sibling tool) and lack of explicit routing against download_photo/download_cover, which would make it fully complete.

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

Parameters4/5

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

Schema coverage is 0% and the schema only names album_id as a string, so the description must compensate. It adds an example format ('123456') for album_id and, crucially, documents the ctx parameter as auto-injected by FastMCP — preventing the agent from attempting to pass a parameter that is not part of the input schema.

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

Purpose4/5

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

States a specific verb and resource — '在后台下载整个本子' (download the entire album) — which an agent can immediately distinguish from the download_photo and download_cover siblings. The '在后台' (in background) phrasing is mildly confusing because the very next sentence declares it a blocking operation, which prevents a 5.

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 phrase '整个本子' (entire album) implicitly tells an agent this is the tool for full albums rather than single photos (download_photo) or covers (download_cover), but no explicit when-to-use/when-not-to-use guidance is given and no alternative tool is named. Prerequisites such as authentication are not mentioned, even though a login sibling exists.

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

download_batchA

有界批量下载并等待整批结果,支持 album/photo 和 zip/pdf/long_img 导出。

并发参数沿用 jmcomic JmSyncRuntime:album_workers=同时下载本子数(默认3,kind=album专用), photo_workers=全批章节数,image_workers=全批图片数;后两项默认沿用 download.threading.photo/image。 返回与 get_download_task 相同的结构:保序去重 items、unfinished_ids、failed_ids、 真实图片/导出路径、task_id/log_path/report_path。部分失败返回 partial,全部失败 failed。 items 的 id 保留请求编号,actual_id 是上游实际本子/章节编号;不同时向用户说明两者。 适合短批次;需要提前拿到 task_id、轮询及主动取消时使用 start_download。 MCP Context 自动注入,用于实时进度通知;调用方断开时协作取消并等待工作线程退出。

NameRequiredDescriptionDefault
idsYes
kindNoalbum
album_workersNo
image_workersNo
photo_workersNo
export_formatsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations, the description carries the full burden and delivers: it discloses failure semantics (partial on some failures, failed on all), the id vs actual_id distinction, cooperative cancellation on caller disconnect, and live progress notification via injected MCP Context. This is far beyond what the schema provides.

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 core purpose is front-loaded in the first sentence and no sentence is filler, but the body is dense with stacked parentheticals, making it longer than strictly necessary for scanning.

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

Completeness4/5

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

An output schema exists, so return values need not be explained, yet the description usefully clarifies the partial/failed status semantics and the item id mapping. Coverage is broad (concurrency, failure modes, cancellation, alternatives) with only minor gaps such as permissions/auth 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?

Schema description coverage is 0%, so the description must compensate. It explains the non-obvious concurrency params well (album_workers default 3 and album-only; photo/image_workers and their inherited defaults), and gestures at kind (album/photo) and export_formats (zip/pdf/long_img). ids is left implicit, so it is strong but not complete.

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

Purpose5/5

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

States a specific verb and resource ('有界批量下载并等待整批结果') plus the supported kinds (album/photo) and export formats, making it clearly distinguishable from the single-item siblings download_album/download_photo and the async start_download.

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

Usage Guidelines5/5

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

Explicitly names the alternative and the selecting condition: '适合短批次;需要提前拿到 task_id、轮询及主动取消时使用 start_download.' This tells the agent both when to use this tool and when to route elsewhere.

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

download_coverA

下载特定本子的封面图片。 默认保存到下载目录下的 'covers' 子目录,也可以指定输出目录。

参数: album_id: 本子 ID (例如 "123456") output_dir: 可选的封面输出目录;省略时使用默认的 'covers' 子目录。

返回: 包含保存路径的成功消息。

NameRequiredDescriptionDefault
album_idYes
output_dirNo

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral disclosure burden. It clearly states that the file is saved to a 'covers' subdirectory by default, that an alternate output directory can be supplied, and that the return value is a success message with the saved path. It omits details like overwrite behavior or directory creation, but the main side effects are disclosed.

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

Conciseness5/5

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

The description is compact, front-loaded with the core purpose, and then organized into clear sections for parameters and return value. Every sentence contributes necessary information, and there is no unnecessary repetition of schema fields.

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 simple two-parameter download tool, the description covers the action, default directory, optional override, and return message, and an output schema exists. It is not fully complete because it lacks guidance on error scenarios, overwrite behavior, or how this tool relates to sibling downloading tools, but it is sufficiently complete for basic selection and invocation.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully explain parameters. It does: album_id is defined as the album ID with an example, and output_dir is defined as an optional output directory with the default behavior explicitly stated. This adds meaning well beyond the bare schema property names.

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

Purpose4/5

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

The description states a specific verb and resource: '下载特定本子的封面图片' (download the cover image of a specific album). This is clear and distinct from the main resource, but it does not explicitly differentiate itself from download_album or download_photo, whose scope could overlap with downloading cover images.

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 intended use is implied by the purpose statement: use this tool when you need an album's cover image. However, the description gives no explicit guidance about when to prefer this over sibling tools like download_album or download_photo, nor does it mention any exclusions or alternatives.

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

download_photoA

下载本子中的特定章节。

参数: photo_id: 要下载的章节 ID (例如 "123456") ctx: MCP Context,用于实时报告进度和日志(由 FastMCP 自动注入)

返回: 包含以下内容的字典: - status: "success" 或 "failed" - photo_id: 章节 ID - image_count: 下载的图片数量 - download_path: 下载目录的绝对路径 - duration: 下载调用总耗时(秒) - image_paths: 实际下载或命中缓存的图片绝对路径 - export_files: 下载插件生成的文件路径,按扩展名分组 - task_id: 本次 MCP 下载调用的任务 ID - log_path: 本次调用专属日志文件的绝对路径 - error: 如果失败则包含错误信息

NameRequiredDescriptionDefault
photo_idYes

Output Schema

NameRequiredDescription

No output parameters

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 bears the full burden of behavioral disclosure. It does this well by revealing caching behavior ('命中缓存'), local filesystem writes (download_path, image_paths), per-call logs (log_path), task_id, and error reporting. It does not mention authentication or cleanup of downloaded files, but the disclosed behavior is substantial.

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 purpose statement is front-loaded and the parameter/return sections are clearly separated. The return dictionary is somewhat verbose, but each field adds operational context (paths, task IDs, logs, durations), so the length is justified rather than bloated.

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

Completeness4/5

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

Given the tool's simplicity (one required parameter) and the detailed return contract, the description is largely complete. The main gaps are the absence of explicit usage boundaries against sibling download tools and lack of authentication/storage side-effect notes, but the extensive output semantics and parameter explanation make this more than minimally viable.

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

Parameters5/5

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

The schema provides only the parameter name photo_id with no description, so schema coverage is 0%. The tool description fully compensates by explicitly defining photo_id as the chapter ID and providing a concrete example ('123456'). This gives an agent everything needed to understand the sole parameter.

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

Purpose4/5

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

The description states a concrete action and resource: '下载本子中的特定章节' (download a specific chapter of a book). This is more specific than a mere restatement of the tool name and is distinguishable by chapter-level scope from siblings like download_album and download_cover. However, the parameter name photo_id conflicts slightly with the 'chapter ID' concept, creating minor ambiguity.

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 intended use is implied: use this when downloading a specific chapter rather than a full album or cover. But the description does not explicitly state when to prefer this tool over download_album or download_cover, nor does it mention prerequisites such as login or whether the chapter must belong to a downloaded album.

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

get_album_commentsA

获取本子的一页评论,包括递归回评和剧透标识。

参数: album_id: 本子 ID (例如 "302820")。 page: 评论页码,从 1 开始(默认值:1)。

返回: 包含以下内容的字典: - album_id: 本子 ID - page: 当前页码 - page_size: 每页主评论数量 - total: 全部分页的主评论总数;不可用时为 null - page_count: 总页数;不可用时为 null - comment_count: 当前页主评论与所有层级回评总数 - comments: 评论列表,每条评论包含 replies 和 is_spoiler

NameRequiredDescriptionDefault
pageNo
album_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must carry behavioral disclosure; it usefully explains pagination, recursive replies, spoiler flags, and null behavior for total/page_count. However, it does not state authentication needs, read-only guarantees, or error behavior for invalid album_id/page.

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

Conciseness4/5

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

The opening sentence is front-loaded and the parameter/return sections are clearly structured and reasonably compact. A minor deduction: the detailed return field list overlaps with the available output schema, adding length beyond the strict minimum.

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 low-complexity, two-parameter read tool, the description covers purpose, parameter semantics, and return semantics including nullability. It lacks usage-routing context relative to sibling tools, which is the main completeness gap.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates by explaining album_id's identity with an example and page's 1-based, defaulted value. This adds meaning the input schema alone cannot provide.

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

Purpose4/5

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

The description states a clear action ('获取本子的一页评论') with the album/comments resource and scope, and adds distinctive features of recursive replies and spoiler flags. It does not explicitly contrast with the sibling get_forum_comments, so it falls just short of full differentiation.

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

Usage Guidelines2/5

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

There is no guidance on when to choose this tool over alternatives such as get_forum_comments or when paginated access is needed. The description implies the use case through its name and wording, but does not state exclusions or alternatives.

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

get_album_detailB

获取特定本子的详细信息。

参数: album_id: 本子 ID (例如 "123456")

返回: 包含详细信息的字典:id, title, author, likes, views, tags, actors, description, chapter_count, update_time, cover_url。

NameRequiredDescriptionDefault
album_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

There are no annotations, so the description must convey behavior. It discloses the return structure (a dictionary with specific fields), which is useful, and the read-only nature is implied by 'get'. However, it does not mention authentication requirements, possible errors, or any side effects beyond fetching data.

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 compact and front-loaded with the core purpose, followed by a clear parameter explanation and a return-field list. Every part adds value, though the return list is somewhat redundant given that an output schema exists.

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

Completeness3/5

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

For a simple one-parameter getter, the description covers the essential input and output. However, it does not explain how to obtain an album_id, whether a login session is required, or what happens on failure. The presence of a login sibling suggests auth context may matter, and that is not addressed.

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

Parameters4/5

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

The input schema provides no parameter description (0% coverage), so the description compensates well by explaining album_id as '本子 ID' and giving a concrete example. For a single-string parameter, this is sufficient and removes ambiguity.

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 retrieves detailed information for a specific album, with a concrete verb and resource. It is distinguishable from sibling tools like browse_albums and search_album, though it does not explicitly name those alternatives.

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 implies the tool is for fetching details about one album once an album_id is known, but it provides no explicit guidance about when to prefer this over search_album, browse_albums, or get_album_comments. No exclusions or alternative routing are mentioned.

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

get_download_taskA

查询后台下载状态、已处理图片数及最终保序清单,或读取跨重启的任务报告。

状态 queued/running/cancel_requested/cancelling 为进行中,success/partial/failed/cancelled/interrupted 为终态。 items 的 success 表示整项完成;unfinished_ids 可用于 retry_download。 completed_images 包括缓存命中,不等于网络传输数。结果清单在整批收尾后确定。

NameRequiredDescriptionDefault
task_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries the whole burden and does so well: it defines the in-progress vs terminal status sets, explains that items.success means the whole item finished, clarifies that completed_images includes cache hits and is not a network-transfer count, and notes the manifest is only final after the batch收尾. It does not cover error behaviour for unknown/expired task_ids, which keeps it from a 5.

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

Conciseness4/5

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

Front-loaded purpose sentence followed by compact, high-density notes on status sets and counter semantics; no filler. The enumerated status lists are slightly compressed and harder to scan than prose or a table would be, but nothing is wasted.

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

Completeness4/5

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

An output schema exists, so return-field documentation is not required, and the description still adds the semantic layer (status lifecycle, meaning of success/unfinished_ids, what the manifest is). The only real gap is that an agent is never told how to obtain a task_id or that terminal status means further polling is pointless.

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

Parameters2/5

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

The single required parameter task_id has 0% schema description coverage, and the description never explains it — not where the ID comes from (e.g. download_batch/start_download) nor whether it survives restarts, even though cross-restart reports are mentioned. The description's rich content is entirely about return semantics, so it fails to compensate for the coverage gap on the one input it takes.

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

Purpose5/5

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

States a specific verb and resource — querying background download status, processed-image count, and the order-preserving manifest, plus reading the cross-restart task report. It is clearly distinguishable from siblings like cancel_download, retry_download and download_batch.

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?

Usage context is clear (poll progress / inspect a finished or interrupted batch) and it explicitly routes the agent onward: unfinished_ids can be fed to retry_download. It never states when NOT to use it or that polling is the intended pattern, so it stops short of full when/when-not guidance.

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

get_favorite_foldersA

获取已登录账户的收藏夹目录。

参数: username: HTML 客户端仅配置 Cookie 时必须提供用户名;通过 login 登录后可省略。 API 客户端忽略此参数,始终查询当前登录账户。

返回: folders: 收藏夹列表,每项包含字符串 id 和 name;无收藏夹时为空列表。 查询全部收藏时使用 folder_id="0",该值不一定出现在目录中。

NameRequiredDescriptionDefault
usernameNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It explains authentication-dependent behavior, the return structure, empty-list behavior, and the special folder_id="0" caveat for querying all favorites. It does not cover error or unauthorized-access behavior, but for a simple read-only getter this is a minor omission.

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 purpose and then organized into labeled 参数 and 返回 sections. Every sentence adds useful operational detail, with no filler or repeated schema information.

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

Completeness5/5

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

For a single-optional-parameter getter with an output schema, the description covers auth context, parameter semantics, return shape, empty-state behavior, and an edge case. An agent has enough information to invoke the tool correctly and interpret the result.

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

Parameters5/5

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

Schema description coverage is 0%, but the description fully documents the only parameter, username, including when to provide it, when to omit it, and how HTML vs API clients treat it. It also explains the special folder_id="0" semantics that are not visible in the input schema.

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

Purpose5/5

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

The first line states a specific verb and resource: retrieving the logged-in account's favorite folders. This clearly distinguishes it from sibling album tools like browse_favorite_albums and add_favorite_album even without naming them. The follow-up notes about username and returned fields reinforce the scope.

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

Usage Guidelines4/5

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

The description gives concrete usage context: HTML clients with only a cookie must supply username, callers who logged in via login may omit it, and API clients should omit it and always query the current account. It does not explicitly name alternatives or say when not to use the tool, but the invocation conditions are clear.

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

get_forum_commentsA

获取全站最新发布的一页评论,包括评论所属本子、递归回评和剧透标识。

参数: page: 评论页码,从 1 开始(默认值:1)。

返回: 包含当前页码、分页总数、评论数量和评论列表的字典。 HTML 客户端不提供 total 和 page_count,此时对应字段为 null。

NameRequiredDescriptionDefault
pageNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.7/5.0
Behavior4/5

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

No annotations are provided, so the description carries the transparency burden. It discloses pagination semantics, the returned dictionary fields, and a behavioral nuance: HTML clients receive null for total and page_count. This is useful context beyond a simple read-only statement, though it does not discuss auth or rate limits.

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

Conciseness5/5

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

The description is compact and well-structured with '参数' and '返回' sections. Every sentence adds information: what the tool does, what the parameter means, and what the return shape is. There is no filler or redundancy.

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 low-complexity tool with one optional parameter and an output schema, the description covers the essential invocation details: pagination, return structure, and client-specific null behavior. It does not provide routing context or mention authentication prerequisites, but those are secondary for this simple read operation.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It does: the '参数' section defines page as a comment page number starting from 1 with a default value of 1, which goes beyond the schema's type/default. The single parameter is fully described, but no examples or edge cases are given.

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 action ('获取全站最新发布的一页评论') with a specific resource and scope: site-wide latest comments. It also lists the main payload contents (parent album, recursive replies, spoiler flags). It does not explicitly name or contrast with the sibling get_album_comments, though '全站' implies a site-wide scope rather than an album-scoped one.

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 given on when to use this tool versus alternatives. A sibling tool get_album_comments exists, but the description does not mention it or provide any selection criteria. The agent must infer that this tool is for site-wide comments and the sibling is for album-specific comments.

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

loginA

登录 JMComic 账户以访问更多功能(如收藏夹、高级内容等)。 登录后的会话 Cookie 会自动保存,供后续请求使用。

参数: username: 用户名 password: 密码

返回: 登录成功或失败的消息。

NameRequiredDescriptionDefault
passwordYes
usernameYes

Output Schema

NameRequiredDescription
resultYes

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 burden of disclosing side effects. It transparently states that a session cookie is saved for future requests. It does not discuss credential handling or possible failure modes, but the core side effect is disclosed.

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 short, direct, and well-structured with clear sections for purpose, side effect, parameters, and return value. Every sentence adds useful information without unnecessary elaboration.

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

Completeness5/5

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

For a simple login tool, the description covers the purpose, the session-cookie side effect, the parameters, and the expected return message. It is complete enough for an agent to understand when and how to invoke the tool successfully.

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

Parameters1/5

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

The schema provides only bare parameter names with no descriptions, and the description merely restates them as '用户名' and '密码' without adding any constraints, formats, or behavioral details. Since schema coverage is effectively zero, the description needed to compensate and did not.

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 verb 'login' and the resource 'JMComic account', and explains the purpose of accessing additional features. It is distinct from the sibling tools, which are all album/comment/option operations, leaving no ambiguity about what this tool does.

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

Usage Guidelines4/5

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

The description explains when to use the tool: to access more features like favorites and premium content. It also notes that the session cookie is automatically saved for future requests, implying login should occur before other authenticated operations. It does not explicitly mention alternatives, but no sibling tool performs authentication.

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

plan_downloadA

下载前预览:规范化/去重 ID、输出根目录和全批并发上限,不下载图片。

kind 为 album 或 photo;export_formats 可选 zip/pdf/long_img。 album_workers 仅限制本子数(默认3);photo_workers 限制全批章节数,image_workers 限制全批图片数, 后两项默认沿用 download.threading.photo/image。参数沿用 jmcomic JmSyncRuntime 命名。 默认不请求漫画元数据或图片;配置的初始化插件仍按自身行为运行。include_details=True 联网读取标题、页数及章节 ID,便于选择部分章节, 单项失败记入 details,不中断其它项。目录仅为根目录,不估算文件大小或下载耗时。 PDF 缺少 img2pdf 时返回可操作错误,不自动安装依赖。

NameRequiredDescriptionDefault
idsYes
kindNoalbum
album_workersNo
image_workersNo
photo_workersNo
export_formatsNo
include_detailsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses that no metadata or images are requested by default, that init plugins still run per their own behavior, that include_details=True performs network reads with per-item failure isolation, that no size/time estimation is done, and that a missing img2pdf yields an actionable error without auto-install. Remaining gaps (auth needs, rate limits, write/side-effect profile) keep it from a 5.

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

Conciseness4/5

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

Front-loads the core purpose in the first line, then groups parameter behavior and edge-case disclosures. The description is long and clause-dense, but for a 7-parameter tool with zero schema coverage and no annotations, nearly every sentence carries useful information.

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

Completeness4/5

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

Given an output schema exists, return values needn't be explained, and the description instead covers behavior, parameter meaning, concurrency defaults, and error handling for a fairly complex tool. It is nearly complete; the main omission is any explicit positioning against the actual download siblings it previews for.

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, and it largely does: it explains kind (album/photo), export_formats (zip/pdf/long_img), album_workers (albums only, default 3), photo_workers/image_workers (batch chapter/image caps inheriting download.threading defaults), and include_details semantics. Only the required 'ids' parameter's concrete format/kind coupling is left implicit, but it is covered by the ID-normalization clause.

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

Purpose5/5

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

States a specific verb + resource in '下载前预览' and enumerates exactly what it does (normalize/dedupe IDs, resolve output root, set global concurrency caps) and what it does NOT do ('不下载图片'). This clearly separates it from sibling download/start tools like download_batch, download_album, and start_download.

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 'before download' framing implies when to use it, and include_details=True is positioned as the path for selecting a subset of chapters. However, it never explicitly names an alternative tool or states when NOT to call this versus download_batch/start_download, so the guidance remains implied rather than explicit.

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

post_processA

对已下载的本子进行后处理(生成 Zip、PDF 或长图)。

参数: album_id: 要处理的本子 ID。 process_type: 后处理类型,可选值为 "zip", "img2pdf", "long_img"。 params: 后处理参数字典。支持: - dir_rule: 输出路径规则。格式: {"rule": "Bd/{Atitle}.zip", "base_dir": "D:/Comics"}。 - delete_original_file: 布尔值,处理完成后是否删除原始文件。

返回: 包含以下内容的字典: - status: "success" 或 "error" - process_type: 后处理类型 - album_id: 本子 ID - output_path: 输出文件/目录的绝对路径 - output_paths: 插件实际生成的全部文件绝对路径 - is_directory: 输出是否为目录 - message: 成功或错误消息

NameRequiredDescriptionDefault
paramsNo
album_idYes
process_typeYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4.2/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 clearly discloses that original files may be deleted via delete_original_file, explains the processing outputs, and describes the return status and paths. It does not mention overwrite behavior or default deletion, but it is substantially transparent for a processing tool.

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, front-loads the purpose, and gives parameter details in an easy-to-scan format. The return section is somewhat redundant given the output schema exists, but it is concise and informative without excessive verbosity.

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

Completeness4/5

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

Given the tool's moderate complexity, the description covers all parameters, allowed values, output format examples, and return fields. It lacks explicit usage boundaries and default deletion behavior, but with an output schema available and detailed parameter semantics, it is largely complete for correct invocation.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. It provides meaning for every parameter: album_id is defined, process_type has explicit allowed values, and params is detailed with a concrete dir_rule example and the delete_original_file boolean semantics. This far exceeds what the bare schema provides.

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

Purpose5/5

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

The description states a specific action: post-processing already downloaded albums into Zip, PDF, or long images. This clearly distinguishes it from download-related siblings like download_album and download_photo, and the output formats make the tool's purpose concrete.

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 phrase '已下载的本子' implies the tool should be used after an album has been downloaded, but there is no explicit guidance on when not to use it or which sibling tool to choose instead. Usage context is implied rather than stated.

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

retry_downloadA

按原顺序为终态任务的未完成项创建新后台任务,保留原报告和任务 ID。

沿用原下载种类、并发和导出格式;采用当前配置/账户,已有图片由上游缓存复用。 不重复下载原任务已完成的本子;无未完成项或仍运行时返回 error。

NameRequiredDescriptionDefault
task_idYes

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden, and it does well: it states that the original download kind, concurrency, export format, report, and task ID are preserved, that current config/account are used, that images come from upstream cache, that completed items are not re-downloaded, and exactly which conditions yield an error. It omits permission/auth requirements and whether the call is side-effecting on the original task, which keeps it below 5.

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 three tight lines that lead with the action and then add semantics and error conditions; every sentence carries information. The only inefficiency is that the cache/config details could be compressed.

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?

Because an output schema exists, return values needn't be explained, and the description covers the mutation's effects, state preconditions, and failure modes well. The main gap is that it doesn't say what to do next when the error is returned, for example which tool to call or how to inspect task state.

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?

There is a single parameter, task_id, and the schema provides no description at all (0% coverage). The description implies a key semantic constraint — the ID must refer to a terminal (non-running) task with unfinished items — which is genuinely useful, but it doesn't spell out what task_id is or where to get it, for example from get_download_task.

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

Purpose4/5

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

The description states a specific verb+resource: create a new background task for the unfinished items of a terminal task, preserving the original report and task ID. This implicitly distinguishes it from start_download/download_batch by scoping it to an already-terminal task, but it never names those siblings explicitly.

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

Usage Guidelines4/5

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

It clearly describes the precondition (the original task must be terminal) and two negative cases that produce an error: no unfinished items, or the task still running. It gives clear context for when to call it, though it doesn't explicitly route the agent to an alternative tool for those error cases.

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

search_albumA

搜索本子,支持高级过滤选项。

参数: keyword: 搜索关键词(支持本子ID、标题、作者、标签等)。 page: 页码,从1开始(默认值:1)。 main_tag: 搜索范围 - 0 (站内), 1 (作品), 2 (作者), 3 (标签), 4 (角色)(默认值:0)。 order_by: 排序方式,与 browse_albums 词汇一致。可选值: - "latest": 最新更新 - "likes": 最多点赞 - "views": 最多观看 - "pictures": 最多图片 - "score": 评分最高 - "comments": 评论最多 (默认值:"latest")。 time_range: 时间过滤,与 browse_albums 词汇一致。可选值: - "all": 全部时间 - "day" 或 "today": 今天 - "week": 本周 - "month": 本月 (默认值:"all")。 category: 分类过滤 - "all" 或具体的 CID(默认值:"all")。

返回: 包含以下内容的字典: - albums: 本子信息列表。 - total_count: 结果总数。 - error: 如果 order_by / time_range 参数无效,则包含错误信息(可选)。

NameRequiredDescriptionDefault
pageNo
keywordYes
categoryNoall
main_tagNo
order_byNolatest
time_rangeNoall

Output Schema

NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior3/5

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

The description discloses that the tool returns a dictionary with albums, total_count, and an optional error field when order_by or time_range are invalid. However, it does not mention whether the operation is read-only or highlight any side effects, though the search nature implies read-only 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 well-organized with a brief intro followed by a bulleted parameter list, making it easy to parse. While it is slightly verbose in repeating default values and explanations, it remains focused and avoids unnecessary fluff.

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

Completeness4/5

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

The return structure is described at a high level (albums, total_count, error) and the error condition is specified. Although the detailed shape of each album item is not included, that information is likely provided by related tools (e.g., browse_albums or get_album_detail), so the description is sufficiently complete for the tool's scope.

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?

Every parameter is explained with specific meaning and allowed values. For example, keyword is described as supporting album ID, title, author, and tags, and order_by and time_range each have explicit value lists with Chinese descriptions. This adds substantial semantic detail beyond the bare schema types and defaults.

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

Purpose5/5

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

The description clearly states the tool's purpose: '搜索本子' (search albums), and it explicitly mentions supporting advanced filter options. The verb 'search' distinguishes it from sibling tools like browse_albums or get_album_detail, making the action and resource unambiguous.

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 does not explicitly state when to use this tool versus the sibling tools, such as browse_albums or get_album_detail. No conditions or alternative scenarios are mentioned, leaving the agent to infer usage context from the parameter list alone.

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

start_downloadA

立即启动后台批量下载并返回 task_id、log_path、report_path。

ID/链接按首次出现顺序去重,kind=album/photo。 album_workers 限制全批同时下载的本子数,默认3,仅适用 kind=album; photo_workers 限制全批同时下载的章节数(也控制 kind=photo 批次); image_workers 限制全批同时下载的图片数。后两项默认沿用 download.threading.photo/image, 不修改配置、不做隐藏截断;所有参数均为正整数,命名沿用 jmcomic JmSyncRuntime。 全批共享图片/章节线程池;每个服务最多四批。export_formats 支持 zip/pdf/long_img, 下载时直接生成并返回真实产物路径,无需二次 post_process,不修改持久配置。 items 的 id 是请求编号,actual_id 是上游实际编号;不同时向用户说明两者。 随后用 get_download_task 查询,用 cancel_download 协作取消。任务由当前服务器持有, 关闭服务器会中断;报告可跨重启读取和重试。仅有 Skill/CLI 时用 jmai download --background。

NameRequiredDescriptionDefault
idsYes
kindNoalbum
album_workersNo
image_workersNo
photo_workersNo
export_formatsNo

Output Schema

NameRequiredDescription

No output parameters

TDQS

A4/5.0
Behavior5/5

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

With no annotations at all, the description carries the full burden and discloses substantial operational behavior: the task is stateful and owned by the current server (shutdown interrupts it), reports survive restarts, thread pools are shared across the whole batch, a service supports at most four batches, no config is mutated, and there is no hidden truncation. It also explains the id vs actual_id distinction and dedup ordering — exactly the kind of context annotations would otherwise need to supply.

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 most important facts — what starts, what is returned, and the follow-up tools — are front-loaded into the first and last sentences, and the middle sentences are information-dense rather than padded. It is somewhat run-on and one clause ('不同时向用户说明两者') is ambiguous, so it is not maximally crisp.

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

Completeness4/5

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

An output schema exists, so return values need not be fully described, and the description still names the key return fields plus lifecycle and concurrency constraints. It is complete enough to invoke correctly, though failure behavior and the precise shape of the returned batch record are left implicit.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it largely does: it defines kind=album/photo, explains that ids accepts IDs or links deduped by first occurrence, describes each of album_workers/photo_workers/image_workers (including that the latter two default to download.threading.* config and are scoped differently), and enumerates export_formats values (zip/pdf/long_img). The ids description is entangled with the dedup sentence and does not state accepted formats, preventing a 5.

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 opens with a specific verb and resource ('立即启动后台批量下载') and states the return values (task_id, log_path, report_path), so the agent knows exactly what the tool produces. It names follow-up tools (get_download_task, cancel_download) and clarifies post_process is unnecessary, but it never distinguishes start_download from close siblings like download_batch, download_album, or plan_download.

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

Usage Guidelines3/5

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

It gives clear lifecycle guidance (query with get_download_task, cancel with cancel_download) and notes export_formats removes the need for post_process, which is genuinely useful routing. However, with siblings such as download_batch, download_album, download_photo, plan_download, and retry_download present, it offers no criteria for choosing this tool over them — usage is only implied by 'batch download'.

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

update_optionA

更新 JMComic 配置并保存到文件。

重要提示:此工具仅执行有限的验证。 在调用此工具之前,建议先查看以下资源了解 JmOption 语法:

  • jmcomic://option/schema: 参数类型和结构约束。

  • jmcomic://option/reference: 字段详细说明和示例。

参数: option_updates: 要合并的配置更新字典。 支持对 client、download、dir_rule 等进行嵌套更新。

返回: 包含文件路径的成功消息,或错误消息。

示例: option_updates = { "client": {"impl": "api"}, "download": {"threading": {"image": 50}} }

NameRequiredDescriptionDefault
option_updatesYes

Output Schema

NameRequiredDescription
resultYes

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does meaningful work: it discloses merge semantics, file persistence, limited validation, and the success/error return shape. It does not detail backup behavior or consequences of a bad update beyond the warning, but 'only performs limited validation' plus the recommendation to consult schema/reference covers the main risk.

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 purpose, then gives the critical warning, parameter explanation, return behavior, and a compact example. Every section earns its place and no sentence is filler.

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 an open-ended nested config object with no annotation support, the description supplies enough to invoke it and routes the agent to the authoritative syntax resources. It also covers return shape even though an output schema exists. Full JmOption syntax is intentionally not embedded here, but the description compensates with references and an example.

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

Parameters4/5

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

The input schema is minimal (open object with additionalProperties true and 0% coverage), so the description must compensate. It does so by defining option_updates as a merge dictionary, naming supported nested areas (client, download, dir_rule), and providing a concrete example. It does not enumerate the full option grammar, but explicitly delegates that to jmcomic://option/schema and /reference.

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 first sentence states a concrete action ('更新 JMComic 配置') with a clear resource and persistent effect ('保存到文件'). It is distinct from all sibling tools, which concern login, downloads, album browsing, and post-processing; this is unambiguously the config-update tool.

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

Usage Guidelines4/5

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

The description gives clear context: it is for merging JmOption updates into the saved config and emphasizes reading the option schema/reference before calling because validation is limited. It does not explicitly name alternatives or say 'do not use for X', but among the sibling list there is no close alternative and the intended when is clear.

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

Tool Schema Changelog

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

  1. 6 tool updatesv0.1.9
    • Addedcancel_download
    • Addeddownload_batch
    • Addedget_download_task
    • Addedplan_download
    • Addedretry_download
    • Addedstart_download
  2. 4 tool updatesv0.1.7
    • Addedadd_favorite_album
    • Addedbrowse_favorite_albums
    • Addeddelete_favorite_album
    • Addedget_favorite_folders
  3. 11 tool updatesv0.1.0
    • First observedbrowse_albums
    • First observeddownload_album
    • First observeddownload_cover
    • First observeddownload_photo
    • First observedget_album_comments
    • First observedget_album_detail
    • First observedget_forum_comments
    • First observedlogin
    • First observedpost_process
    • First observedsearch_album
    • First observedupdate_option

TDQS

A3.7/5.0

Scored across 21 tools

Disambiguation3/5

The download surface is crowded: download_album, download_batch, and start_download all 'download albums' and differ mainly by blocking vs. background semantics, so an agent must read carefully to pick correctly. Tools like plan_download/get_download_task/cancel_download/retry_download are distinct lifecycle stages, but the three download entry points create genuine overlap. Non-download tools (search, browse, detail, favorites, comments, config) are clearly separable.

Naming Consistency4/5

Almost all tools follow a consistent snake_case verb_noun pattern (search_album, browse_albums, get_album_detail, add_favorite_album, download_cover), which is predictable. Minor deviations exist—'login' is a bare verb and 'post_process' lacks a noun object—but overall the convention holds.

Tool Count3/5

At 21 tools this sits in the heavy range for a single-site comic client, and the seven download-related tools inflate the count beyond what most agents need. The breadth of domain features (search, browse, favorites, comments, downloads, config) partly justifies the size, but it is borderline heavy.

Completeness4/5

Coverage is strong: search, browse/ranking, album detail, comments (album and forum), favorites lifecycle (list folders, browse, add, delete), downloads, post-processing, and config all exist. Minor gaps remain—no dedicated chapter/photo metadata retrieval or user-profile tool—but core workflows are complete.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to search, browse, download, organize, and post-process comics through MCP tools, including account login, favorites, comments, rankings, configuration, and download task control. Supports stdio, SSE, and HTTP transports while exposing knowledge resources for configuration and skill reference.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    This MCP server exposes 21 tools and 3 resources that enable AI clients to search, browse, and download JMComic albums and photos, manage favorites, fetch comments, update configuration, and perform post-processing like ZIP/PDF export over stdio, SSE, or HTTP transports.
    -
  • F
    license
    Not graded
    quality
    A
    maintenance
    Enables AI agents to search, browse, and download comics via natural language, manage favorites, read comments and rankings, and convert downloaded content into ZIP, PDF, or long images. It also exposes download planning, background task progress, cancellation, retry, login/session handling, and runtime configuration as MCP tools and resources.
    -