mcp-server-fanqie
This server exposes FanQie search and reading tools plus legacy device/content endpoints, but several advanced capabilities are status-only or unimplemented.
Search novels, audiobooks, comics, and short dramas by keyword with pagination and content-type selection.
Fetch book details, complete or simplified chapter directories, single-chapter text, raw chapter data, and book comments.
Use a unified content tool for single and batch chapter retrieval; per the README, audiobook/video playback, comic content, and whole-book download are not actually implemented.
Check device-pool and platform device status for Android/iOS.
Device registration, iOS content, iOS device registration, and manga download progress are legacy/unavailable; per README they return 501 or status notes rather than performing real work.
Personal account features such as scan login, bookshelf, reading progress, and highlights are not present in this 14-tool schema.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@mcp-server-fanqie帮我搜索修仙小说"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
番茄小说:MCP、独立 Skill 与 DeepSeek Harness 阅读插件
搜索番茄作品、查看小说目录和网站可见正文、读取书评;本人扫码登录后,还可以读取自己的书架、阅读进度和收藏划线原文。
项目提供三种入口:MCP 服务、独立 Skill、DeepSeek Harness 图形插件,另有命令行和本地 HTTP API。各入口复用本机数据核心,直接访问番茄官方站点。
**版本说明:**MCP / Skill 历史 Release 为 0.2.0-dev.6;DeepSeek Harness 插件为源码中的 0.4.0。旧 Release 不含该插件,应从当前仓库获取插件。
安装与使用 · Harness 插件 · 功能清单 · HTTP API · 历史 Release
当前插件尚未发布到 npm;旧 npm 包
@fysh925/mcp-server-fanqie也不包含此开发预览版。请使用仓库源码或对应的历史 Release,不要使用旧 npm 包判断当前功能。
三种使用方式
MCP:为支持 MCP 的 AI 客户端提供番茄搜索、阅读和本人账号数据查询。当前开发预览版请按使用指南从源码或 Release 安装。
独立 Skill:在支持 Skill 和 Node.js 22+ 的客户端中使用,技能目录包含独立运行文件。安装方法见使用指南。
DeepSeek Harness 插件:在右侧栏搜索、查看封面和目录、阅读网站可见章节;本人扫码后查看书架和收藏划线,并提供对话工具。详见插件文档。
DeepSeek Harness 插件是独立包 dsh-fanqie-reader;它与上文提到的 MCP 包 @fysh925/mcp-server-fanqie 是不同的 npm 包。插件当前支持的媒体范围和账号使用方式见插件文档。
Related MCP server: webnovel-mcp
为什么重做:从第三方服务迁移到本地实现
旧版0.1.x的主要职责是把第三方服务封装成14个MCP工具,默认请求 http://101.35.133.34:5000。搜索、目录、正文和设备管理等能力由该第三方服务器提供。第三方地址不可用后,MCP工具虽然仍能列出,实际查询也会随之失效。
本次把数据获取实现放进项目本身:
本地实现公开查询:搜索、书籍详情、目录、网站可见章节、书评正文,直接访问官方入口。
提供 MCP、独立 Skill 和 Harness 插件:三种入口复用核心;Skill 可以独立运行,Harness 插件提供图形界面和对话工具。
新增本人账号能力:扫码登录、当前书架、云端阅读位置、收藏划线原文及翻页。
补齐使用与错误处理:目录分页、分类搜索游标、完整书评文本、故障重试、限流提示及本地索引后备。
明确能力边界:保留旧路径方便迁移,未实现的功能返回501;不把工具名称还存在当作功能已经完成。
本版解决的是旧第三方API这一中间依赖,仍需要联网访问番茄官方站点。官方接口、网页结构、字体或匿名设备规则变化后,仍可能需要维护。
对比旧第三方服务:本次实现了什么
“旧版范围”以仓库0.1.x的README和API封装为依据,只说明当时声明或转发了什么,不代表现在还可验证旧服务,也不保证新旧返回字段逐项相同。
能力 | 旧版第三方依赖范围 | 当前MCP | 当前Skill | 本版实际行为与边界 |
小说关键词搜索 | 转发第三方搜索 | 支持 | 支持 | 官方免签名搜索,支持offset翻页 |
听书搜索 | 转发第三方分类搜索 | 支持 | 支持 | 官方App只读搜索,本地生成签名 |
漫画搜索 | 转发第三方分类搜索 | 支持 | 支持 | 仅搜索与基本元数据;可能混入推荐 |
短剧搜索 | 转发第三方分类搜索 | 支持 | 支持 | 仅搜索与基本元数据;支持cursor翻页 |
小说详情 | 转发第三方详情 | 支持 | 支持 | 从官网页面数据提取规范化字段 |
分卷目录 | 转发第三方完整目录 | 支持 | 支持 | 默认每页50章,上限200章 |
简化目录 | 转发第三方简化目录 | 支持 | 使用directory | MCP/API可只返回标题与ID |
单章小说正文 | 转发第三方内容 | 部分支持 | 部分支持 | 网站可见正文;不保证与App全文一致 |
批量小说正文 | 转发第三方批量接口 | 支持 | 支持 | 每批最多20章,逐章校验书籍归属 |
原始章节数据 | 转发第三方原始内容 | 支持 | 支持 | 官网章节字段及解析正文 |
书评正文与翻页 | 旧文档声明评论列表 | 支持 | 支持 | 保留正文、评分、点赞、回复数及cursor;这里只读取整本书的书评 |
章评、段评、楼中楼正文 | 旧文档对评论范围有宽泛描述 | 未实现 | 未实现 | 不把书评当作其他评论类型 |
听书音频播放 | 旧统一内容接口声明支持 | 未实现 | 未实现 | 搜索可用,音频内容未接入 |
短剧视频播放 | 旧统一内容接口声明支持 | 未实现 | 未实现 | 搜索可用,视频内容未接入 |
漫画图片、下载任务与进度 | 旧统一内容与任务接口声明支持 | 未实现 | 未实现 | 任务进度兼容入口返回501 |
整本下载 | 旧统一内容接口声明支持 | 未实现 | 未实现 | 可按目录批量查询,未提供整本任务或导出 |
Android设备注册、设备池 | 旧版依赖服务端设备管理 | 未实现真实管理 | 无命令 | 两个状态工具只返回网页模式说明;注册返回501 |
iOS注册及专用正文 | 旧版依赖iOS服务 | 未实现 | 无命令 | 保留接口,返回501 |
本人扫码登录与本地退出 | 原14个工具未提供 | 新增 | 新增 | 手机本人确认,凭据只保存在本机 |
本人书架及阅读位置 | 原14个工具未提供 | 新增 | 新增 | 当前书架、云端可用阅读记录及当前章节 |
有收藏的书及数量 | 原14个工具未提供 | 新增 | 新增 | 划线数、书签数、笔记数 |
本人收藏划线原文 | 原14个工具未提供 | 新增 | 新增 | 原文、章节、位置、修改时间与cursor翻页 |
独立撰写的笔记/想法正文 | 原14个工具未提供 | 未实现 | 未实现 | 可读笔记数量,尚不读取笔记正文 |
本地元数据索引 | 原14个工具未提供 | 无专用工具 | 新增 | 通过CLI/API导入和刷新,小说搜索故障时明确标记降级 |
结论:本版覆盖了公开搜索、书评、小说网站阅读和个人阅读数据的当前需求,并未完整复刻旧服务的音视频、漫画内容、设备池、iOS或整本下载能力。
当前MCP与Skill能调用哪些方法
以下Skill命令均由技能目录内的 scripts/fanqie.mjs 执行。源码用户可使用 node "server/cli.mjs" <命令>。
公开查询,无需账号登录
MCP工具 | Skill/CLI命令 | 用户可以做什么 |
|
| 搜索小说、听书、漫画、短剧;关键词与分类保持不变继续翻页 |
|
| 查看书名、作者、简介、字数及最新章节等 |
|
| 分页查看含分卷信息的章节目录 |
| 无独立命令,可使用directory | 获取简化的章节标题、ID列表 |
|
| 读取一个网站可见章节 |
|
| 统一单章与批量正文入口,每批最多20章 |
|
| 查看原始章节数据及解析后的正文 |
|
| 获取整本书的书评正文、评分、点赞数和回复数 |
本人账号,需要扫码授权
MCP工具 | Skill/CLI命令 | 用户可以做什么 |
|
| 获取本人登录二维码 |
|
| 检查扫码、确认和登录完成状态 |
|
| 检查本地账号登录是否有效 |
|
| 查看当前官方书架及已同步的阅读位置 |
|
| 查看云端阅读记录、书名、当前章节,可筛选一本书 |
|
| 查找有收藏记录的书及划线、书签、笔记数量 |
|
| 分页读取自己收藏的划线原文及位置 |
|
| 清除本机该配置的凭据,不更改官方书架、进度或收藏 |
辅助与兼容方法
MCP工具 | Skill/CLI命令 | 实际作用 |
无 |
| 从官网录入指定书籍的元数据 |
无 |
| 刷新官网首页可发现的书籍索引 |
无 |
| 查看当前能力清单 |
无 |
| 显示命令和参数帮助 |
| 无 | 返回网页模式说明,不管理真实设备池 |
| 无 | 返回网页模式说明,不验证真实App设备 |
| 无 | 尚未实现,返回501 |
| 无 | 尚未实现,返回501 |
| 无 | 尚未实现,返回501 |
| 无 | 尚未实现,返回501 |
MCP共注册22个工具,其中16个公开查询/本人账号工具、2个状态兼容工具、4个未实现工具。Skill/CLI有19个命令,含help和capabilities。Harness 插件另注册7个 fanqie_* 对话工具,并提供图形界面;它们与 MCP 的22个工具不是一一对应。参数、HTTP路径及边界见 完整清单。
我们如何实现
旧版调用链是“AI客户端 → MCP封装 → 第三方开放API → 数据”。本版默认调用链如下:
flowchart TD
A[支持MCP的AI客户端] --> B[MCP工具层]
B --> C[自动启动的本机HTTP API]
D[Skill或终端CLI] --> E[共享数据核心]
P[Harness右侧栏与对话工具] --> Q[插件Host]
Q --> E
F[其他本机程序] --> C
C --> E
E --> G[公开查询客户端]
E --> H[本人账号客户端]
G --> I[番茄官网网页与目录接口]
G --> J[官方小说搜索接口]
G --> K[官方App搜索与书评接口]
G --> L[本地元数据索引后备]
H --> M[官方扫码登录与账号接口]
H --> N[本机用户目录中的账号凭据]数据来源与处理方式
模块 | 实现方式 | 主要代码 |
小说搜索 | 请求官方 |
|
听书/漫画/短剧搜索 | 请求 |
|
书评正文 | 请求官方commentapi只读列表,保留完整文本和分页会话;不在客户端截断正文 |
|
本地请求签名 | 使用Node原生加密实现签名,无需公共签名服务;MIT来源及许可随包附带 |
|
小说详情 | 读取官网页面的JSON初始数据,直接解析,不执行页面脚本 |
|
目录和网站正文 | 目录走官网接口;章节提取可见数据,使用已知字体映射转换字符;锁定、未知字体或残余乱码明确报错 |
|
扫码与会话 | 官方二维码、本人手机确认、手动保留跳转中的Cookie;成功后验证阅读进度接口,凭据持久化到本机 |
|
书架与进度 | 读取官方书架和进度,再按book_id关联书籍详情、章节标题;保留上游进度值,不猜测百分比 |
|
收藏划线 | 先列出有收藏的书,再读取官方bookmark列表;初次带next_id=0,后续cursor同时携带两项上游分页标记;区分划线和普通书签 |
|
三种入口复用 | MCP通过本地API调用核心;Skill和Harness插件分别使用同步的核心运行文件,可独立安装 |
|
小说公开搜索不需要签名或本人登录。书评与App分类搜索使用匿名设备参数和本地签名,内置公共示例设备可能失效,可配置配套的 FANQIE_DEVICE_ID、FANQIE_INSTALL_ID;不会自动注册设备或激活会员。个人书架和划线使用本人扫码的会话,与匿名设备配置是两条独立链路。
稳定性和数据边界
公开上游请求串行处理,最小间隔500毫秒,同一请求合并;缓存最多100项、有效期5分钟。网络中断或502/503/504最多重试一次,限流时返回等待时间。
个人响应不进入公开查询缓存,按本地账号配置分别存储;同一账号跨进程使用文件锁。账号请求不自动重试。
账号凭据默认在系统用户数据目录,可用
FANQIE_ACCOUNT_DIR指定;不写入技能目录、源码仓库或发布包。不同系统不保证文件加密,请使用自己的受保护用户目录。书架是当前书架,阅读进度是官方当前返回的云端记录;缺少进度不能推断从未读过。
read_progress不直接当作百分比。只有
has_more=false才结束划线翻页。上游分页同时计算书签等记录,某页没有划线也可能还有下一页。HTTP API仅监听本机,拒绝浏览器Origin及非本机Host,可选Bearer Token;账号接口不面向公开部署或多租户服务。
安装:选择适合的入口
入口 | 前置要求 | 是否手动启动API |
MCP | Node.js 22+、项目npm依赖、支持MCP的客户端 | 不需要,自动启动随机本地端口API |
独立Skill | Node.js 22+、支持Skills且能执行本地脚本的客户端 | 不需要,直接运行核心代码 |
DeepSeek Harness 插件 | 支持插件的 Harness 桌面端;已记录 | 不需要,插件 Host 调用内置核心 |
CLI | Node.js 22+和完整代码 | 不需要 |
HTTP API | Node.js 22+和项目依赖 | 单独启动,默认127.0.0.1:5000 |
DeepSeek Harness:图形界面与对话工具
克隆或下载当前仓库,保留完整的
plugins/deepseek-harness/目录,包括vendor/。在 Harness 的插件管理页选择该目录安装,或在会话中让智能体通过
plugin_manager install_bundle安装该目录的绝对路径。按需刷新或重启 Harness,打开右侧栏的「+」开始页,选择「番茄阅读」。
在界面搜索、浏览目录和阅读;查看本人书架与划线时,在「我的」页面按官方提示扫码。
插件还提供7个 fanqie_* 对话工具。它与 MCP/Skill 可分别使用,账号凭据默认沿用核心的本机存储方式;具体路径可能因打包环境而不同。安装与卸载详见 插件文档。插件目前未发布到 npm,历史 0.2.0-dev.6 Release 也不含它。
独立Skill:无需npm依赖
将整个
fanqie-novel文件夹放入客户端的技能父目录。Codex示例为Windows的$HOME/.agents/skills/,macOS/Linux的~/.agents/skills/;其他客户端使用其支持的目录。确认
fanqie-novel/SKILL.md和fanqie-novel/scripts/runtime/都存在,不能只复制说明文件,也不要多套一层同名目录。重新加载技能或重启客户端,输入:
$fanqie-novel 搜索《三体》,核对作者并查看前20章目录。
Skill ZIP包含全部必需运行代码;不需要另外安装Python、浏览器、npm包或启动MCP服务。仍需联网访问官方站点。
从克隆仓库安装Skill也可以,无需先安装npm依赖:
node "scripts/install-skill.mjs" --target "$HOME/.agents/skills"支持GitHub路径的技能安装器可安装 fysh1010/mcp-server-fanqie 仓库的 skills/fanqie-novel 目录。更新时先备份或重命名原技能文件夹,安装脚本不会覆盖已有目录。
MCP:从源码或源码ZIP安装
git clone https://github.com/fysh1010/mcp-server-fanqie.git
cd mcp-server-fanqie
npm ci
npm run build也可从Release下载源码ZIP,解压后在仓库根目录执行 npm ci 和 npm run build。
支持mcpServers格式的客户端可使用以下JSON配置;其他客户端按其MCP配置格式填写相同command和args:
{
"mcpServers": {
"fanqie": {
"command": "node",
"args": ["D:/你的路径/mcp-server-fanqie/server/mcp-local.mjs"]
}
}
}将args改为本机真实绝对路径。macOS/Linux填写对应的 /Users/... 或 /home/... 路径。若客户端找不到node,将command改为Node可执行文件的绝对路径。重新加载MCP连接后即可搜书,无需先运行 start:api。
Release也提供本地npm安装用的 .tgz;安装步骤见 使用指南。不要把旧npm包名的npx配置当作本版安装方法,也不要将本机路径填写到无法访问本机文件的云端托管环境。
使用:可以直接告诉AI什么
无需登录
“搜索《三体》,核对作者,查看前20章目录。”
“读取这本书第三章,概括情节。”
“获取这本书20条书评,整理读者评价。”
“搜索带‘重生’的短剧,再看下一页。”
CLI也可以直接运行:
node "server/cli.mjs" search "三体"
node "server/cli.mjs" search "绝世武神" --type manga
node "server/cli.mjs" search "重生" --type drama
node "server/cli.mjs" comments "7143038691944959011" --count 20
node "server/cli.mjs" directory "7143038691944959011" --offset 0 --limit 20本人书架、阅读进度与收藏划线
告诉AI:“连接我的番茄账号,让我扫码。”AI调用
start_account_login或Skill的login-start并展示二维码。按二维码返回的官方提示,用本人已登录的手机App扫码并确认;当前官方可能提示使用抖音App,以实际说明为准。
AI每隔至少3秒检查登录结果,
status=connected才算完成。二维码约5分钟有效,过期重新生成。先说“查看我的书架”,核对是否对应自己的番茄账号。
再说“列出我有划线的书,读取其中一本的全部收藏划线,按章节整理”。AI会使用cursor翻页。
要清除本机登录时,说“断开我的番茄账号”。
MCP和Skill在相同系统用户、相同账号目录配置下可共用登录状态。多账号使用不同account本地配置名,并分别扫码。账号名不是平台用户ID,不能凭别人的ID读取私人数据。不要把密码或Cookie发送到聊天里。
终端用户使用 login-start → login-poll → bookshelf / reading-progress / highlight-books / highlights;可运行示例、分页字段和退出说明见 详细使用指南。
独立HTTP API
npm run start:api默认地址为 http://127.0.0.1:5000。示例:
Invoke-RestMethod "http://127.0.0.1:5000/health"
Invoke-RestMethod "http://127.0.0.1:5000/api/search?key=三体"
Invoke-RestMethod "http://127.0.0.1:5000/api/account/status?account=default"成功返回 { "code": 200, "message": "success", "data": ... },失败同时使用真实HTTP状态码及业务码。接口清单、参数、Token和端口配置见 HTTP文档。
更新、排错与验证
更新源码MCP:确认自己已保存本地修改,再执行
git pull --ff-only、npm ci、npm run build,重新加载MCP连接。更新Skill:先备份或重命名旧技能目录,再解压新ZIP或运行安装脚本;重新发现技能。不要只更新SKILL.md。
401或账号过期:重新扫码,不把失败结果当成空书架。
403章节权限错误:官网未提供可读权限,当前实现无法读取。
429限流:按响应的retry_after提示等待;账号接口未返回等待秒数时稍后重试,勿循环请求。
409 ACCOUNT_BUSY:同一账号正在处理另一请求,完成后再试。
503 LOCAL_BUSY:公开请求队列繁忙,减少并发后重试。
评论/分类搜索匿名设备失效:配置配套的FANQIE_DEVICE_ID、FANQIE_INSTALL_ID;本人扫码登录与该匿名设备配置无关。
搜索结果source=local_index:只表示有限本地索引,不能推断全站没有该书。
构建与离线测试:
npm run build
npm test当前34项离线测试覆盖解析、权限、字体、分页、签名、限流、账号隔离、登录跳转、划线游标、MCP调用与独立Skill安装。node "server/smoke.mjs" 额外执行少量公开样本在线验证;个人账号功能另经本人扫码实测,公开测试和仓库示例不包含真实账号凭据或私人划线。
历史协议实验单独记录在 EXPERIMENTS.md,实验成功不代表对应能力已经集成本版。依赖审计与发布验证信息见本版Release说明。
项目结构与许可
src/ MCP工具定义、客户端封装、字体映射
build/ 已编译MCP代码
server/ 公开数据核心、账号核心、HTTP与CLI、测试
skills/fanqie-novel/ 可独立安装的完整Skill
scripts/build-skill.mjs 从共享核心生成Skill运行文件
scripts/install-skill.mjs 安装完整技能目录,不覆盖已有安装
docs/USAGE.md 详细安装、登录、分页和排错
docs/FUNCTIONS.md 全部能力、MCP/Skill/HTTP方法对照修改核心后执行 npm run build 同步Skill运行文件;无需维护第二套爬虫。运行使用Node.js 22+,Python仅用于开发者打包ZIP,不是用户运行依赖。
MIT。本项目为非官方工具,内容版权归原平台及权利人所有。本地签名代码的MIT参考来源与许可见 第三方说明,相关许可证随独立Skill分发。
Star History
下图展示本仓库GitHub Star数量随时间的变化,点击可打开交互页面。图表由 Star History 生成。
Available Tools
14 toolsget_book_detailA
Get detailed information about a specific book including title, author, description, cover, and other metadata
| Name | Required | Description | Default |
|---|---|---|---|
| book_id | Yes | Book ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations exist, so description carries full burden. It implies a read operation ('Get detailed information') but does not explicitly state it is read-only, idempotent, or safe. The listed fields suggest low side effects, but transparency is adequate rather than thorough.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, clearly front-loaded with the action ('Get detailed information'), and efficiently lists key data fields without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema is provided, so the description must explain return values. It lists title, author, description, cover, and 'other metadata'—helpful but vague. Lacks structure (e.g., nested objects, optional fields) that an agent would need for reliable processing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% for the single parameter book_id, so baseline is 3. The description adds no extra meaning beyond 'Book ID' from the schema; it does not specify ID format, source, or alternatives.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it gets detailed info for a specific book, listing title, author, description, cover, and other metadata. It effectively distinguishes from siblings like get_book_directory (list) and get_chapter_content (chapter-specific).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No explicit guidance on when to use versus alternatives (e.g., get_book_directory for listing, search_books for discovery). No prerequisites, context, or exclusions provided.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_book_directoryB
Get the complete chapter directory of a book including all volumes and chapters
| Name | Required | Description | Default |
|---|---|---|---|
| book_id | Yes | Book ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It fails to disclose behavioral traits such as authentication requirements, read-only nature, return format, or any side effects. The phrase 'complete ... including all volumes and chapters' gives some structural hint but is insufficient.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, well-structured sentence with no wasted words. It is front-loaded with the key action and resource.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the basic purpose but lacks important details such as the structure of the returned directory (e.g., hierarchical vs flat), pagination, or any prerequisites. For a tool with one parameter and no output schema, it is minimally adequate but not fully complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema has 100% coverage with a description for 'book_id' ("Book ID"). The description does not add any additional meaning or usage details beyond what the schema already provides, meeting the baseline but not exceeding it.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'complete chapter directory', and specifies it includes all volumes and chapters. However, it does not differentiate from the sibling tool 'get_simple_directory', which might offer a simpler version.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives. There is no mention of preconditions, exclusions, or comparison to sibling tools like 'get_simple_directory' or 'get_book_detail'. The usage context is purely implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_chapter_contentC
Get content of a specific chapter. This is a simplified interface that directly returns chapter text
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | Chapter ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must cover behavioral traits. It mentions 'simplified' and 'directly returns chapter text', but lacks details on side effects, authentication requirements, rate limits, or what 'directly' implies (e.g., no preprocessing). The transparency is minimal for a read tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences that are front-loaded with the main purpose. Every word earns its place, and there is no redundancy or fluff.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no annotations, no output schema, and a sibling list that includes similar tools like get_content and get_raw_content, the description is incomplete. It does not explain return format, error handling, or how it differs from alternatives, leaving gaps for the AI to infer.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter, item_id, described as 'Chapter ID'. The description adds no additional meaning beyond the schema, so the baseline score of 3 applies.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and the resource 'content of a specific chapter', and adds 'simplified interface that directly returns chapter text'. However, it does not differentiate from sibling tools like get_content, which may also return chapter content, leading to potential confusion.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives such as get_content or get_raw_content. The description implies basic usage but does not specify context, prerequisites, or exclusions, leaving the AI without decision support.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_commentsC
Get comments for a book, chapter, or other content with pagination support
| Name | Required | Description | Default |
|---|---|---|---|
| count | No | Number of items per page | |
| offset | No | Offset for pagination | |
| book_id | Yes | Book ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description mentions pagination support, but the schema already defines count and offset parameters for pagination. No additional behavioral traits disclosed (e.g., ordering, authentication, limits).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no redundancy. Front-loaded with the main action. However, could be slightly more structured by separating scope and pagination.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Description is minimal. No output schema, so expected return fields are not hinted. Does not clarify ordering, filtering, or whether all comments are returned. Incomplete for a tool that retrieves a list with pages.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so baseline is 3. The description adds no additional meaning beyond what the schema already provides for parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool retrieves comments for a book, chapter, or other content. While 'other content' is vague, it is the only sibling tool focused on comments, so purpose is clear but not fully specific.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives. Does not mention when not to use or any conditions. Lacks any usage context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_contentB
Unified content retrieval interface supporting novels, audiobooks, short dramas, comics, batch retrieval, and whole-book download
| Name | Required | Description | Default |
|---|---|---|---|
| tab | Yes | Content type: novel, audiobook, short drama, comic, batch, download | |
| async | No | Comic async mode (0 or 1, default 1). Recommended 1 for faster responses | |
| book_id | No | Book ID (required for batch retrieval and download) | |
| item_id | No | Single chapter/video/comic ID (required for novel, audiobook, short drama, comic) | |
| tone_id | No | Audiobook voice ID (used for audiobook, default 0) | |
| item_ids | No | Multiple chapter IDs separated by commas (required for batch) | |
| show_html | No | Whether to return HTML format for comics (0 or 1, default 0) |
TDQS
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 says 'retrieval interface' suggesting read-only, but does not explicitly confirm safety, rate limits, or other behavioral traits. The description is minimal on behavioral details.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the core purpose ('unified content retrieval interface') and enumerates supported types. No redundant information.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the complexity (7 parameters, 6 content types), the description is adequate but does not elaborate on how to use each type or the expected output. With no output schema, more detail would be beneficial.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 100%, so the schema already documents all parameters. The description adds no additional semantic information beyond what the schema provides.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it is a 'unified content retrieval interface' and lists the types of content it supports (novels, audiobooks, etc.), distinguishing it from sibling tools like get_chapter_content or get_book_detail.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description lacks explicit guidance on when to use this tool versus its siblings (e.g., get_chapter_content). It does not mention prerequisites or scenarios where this tool is preferred.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_device_pool_statusB
View the overall status of the device pool including all registered devices
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description must fully disclose behavior. 'View' implies a non-destructive read operation, which is appropriate. However, no details on response format, potential latency, or what 'overall status' aggregates (e.g., average metrics, count of online devices).
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, no fluff. Information is front-loaded but could arguably be more concise by removing 'including all registered devices' since 'overall status of the device pool' already implies that.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter, no-output-schema tool, the description is minimal but sufficient for a simple status check. However, 'overall status' is vague; it could mention whether it returns aggregated data or per-device details, and whether it requires authentication.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
No parameters in schema, and schema description coverage is 100%. Description adds no parameter info, but none is needed. Baseline score of 4 for zero-parameter tools.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description uses verb 'View' and specifies resource 'overall status of the device pool', clearly distinguishing from sibling 'get_device_status' (which likely targets a single device). However, 'overall status' is slightly vague; could specify what metrics are included.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool vs alternatives like 'get_device_status'. The description implies it's for a high-level overview, but no explicit context or exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_device_statusB
View the status of devices for a specific platform
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Platform type: android or ios | android |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided. Description only says 'view', missing details on whether status is real-time, cached, or what triggers updates. No disclosure of side effects or permissions.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence with no extraneous words. Highly concise and front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Tool has one optional parameter and no output schema. Description adequately covers purpose but does not explain the return format or data scope. Minimum viable for a simple tool.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with parameter description. Description adds no new semantics beyond the schema, which already explains platform options.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states it views device status for a platform. It distinguishes from sibling tools like get_device_pool_status by specifying 'devices', but does not explicitly differentiate from that sibling.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus alternatives like get_device_pool_status or register_device. The description implies a simple query but provides no context for selection.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_ios_contentA
Get chapter content using the iOS platform interface (signed with the 8402 algorithm). Note: depends on the iOS device pool and may be temporarily unavailable
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | Chapter ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
The description mentions dependency on the iOS device pool and potential unavailability, plus the signing algorithm. With no annotations, it provides some behavioral context but lacks details on read-only nature, side effects, or error handling.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences, front-loading the core purpose and adding a critical caveat. No unnecessary words or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the simple schema (one parameter, no output schema) and no annotations, the description provides moderate completeness. It covers the platform dependency and algorithm but omits details about return format, error cases, or expected behavior.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers the single parameter item_id with a description of 'Chapter ID'. The tool description adds no additional semantic information beyond what the schema already provides, so it meets baseline with no extra value.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool gets chapter content using the iOS platform interface with a specific algorithm. However, it does not differentiate from sibling tools like get_chapter_content or get_raw_content, which share similar purposes.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the tool is for iOS-signed content but does not explicitly state when to use it versus alternatives. The note about device pool unavailability provides some context, but no exclusions or direct comparisons are given.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_manga_progressA
Query the progress of a manga download task by its task ID (returned from the comic content interface)
| Name | Required | Description | Default |
|---|---|---|---|
| task_id | Yes | Task ID returned from the manga/comic content interface |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries full burden. It only states 'query the progress' without disclosing whether the operation is read-only, idempotent, or what the response format might be. More detail on behavior (e.g., polling semantics) is needed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no wasted words. Every part is informative.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple tool with one parameter and no output schema, the description is adequate but could be more complete. It doesn't describe the return value structure, possible statuses, or error cases, which would help an agent interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The schema covers the parameter with a description that matches the tool's description. The tool description adds context that the task_id comes from the comic content interface, but this adds minimal value. With 100% schema coverage, baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool queries progress of a manga download task using a task ID. It specifies the source (comic content interface), which distinguishes it from sibling tools that retrieve content or other data.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when a task ID is available from the comic content interface, but it does not explicitly state when to use this tool versus alternatives like get_content or get_chapter_content. No alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_raw_contentB
Get the unprocessed raw chapter content, including the complete response data (HTML format, author notes, etc.)
| Name | Required | Description | Default |
|---|---|---|---|
| item_id | Yes | Chapter ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations provided, so description bears full burden. It reveals content type (HTML, author notes) but omits other behaviors like idempotency, authentication, or side effects.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single, focused sentence that front-loads the purpose without extraneous words.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Lacks output schema; description gives some context on return data (HTML, author notes) but is vague about structure. With many siblings, more detail on return format would improve completeness.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Parameter schema has 100% coverage with basic 'Chapter ID' description. Description adds no extra meaning beyond schema, meeting baseline for high schema coverage.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Clearly states it retrieves 'unprocessed raw chapter content' with HTML format and author notes, distinguishing it from likely processed siblings like get_chapter_content. However, it does not explicitly contrast with all siblings.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Implies usage for raw content but provides no when-to-use or when-not-to-use guidance, nor mentions alternatives among sibling tools.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
get_simple_directoryA
Get simplified directory information with only chapter titles and IDs
| Name | Required | Description | Default |
|---|---|---|---|
| book_id | Yes | Book ID |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It only states that the tool returns 'simplified directory information' but does not explain whether it is read-only, requires authentication, or any other behavioral aspect.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, front-loaded sentence without any unnecessary words. It effectively communicates the tool's purpose concisely.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
While the description is adequate for a simple tool with one parameter, it lacks details on the output structure or how it compares to full directory tools. Given the numerous sibling tools, more completeness would improve clarity for the agent.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 100% with one parameter described as 'Book ID'. The description does not add any extra meaning beyond what the schema provides, so a baseline score of 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Get' and resource 'simplified directory information', and explicitly mentions it includes only chapter titles and IDs, distinguishing it from sibling tools like get_book_directory.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies a simplified view but provides no explicit guidance on when to use this tool versus alternatives like get_book_directory. With 13 sibling tools, more explicit usage context would be helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_deviceC
Register a new device to the device pool
| Name | Required | Description | Default |
|---|---|---|---|
| platform | No | Platform type: android or ios | android |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full burden for behavioral disclosure, but it provides none. It does not mention side effects, authentication requirements, rate limits, or what happens if the device is already registered. The description adds no value beyond the basic action.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single sentence with no superfluous words, achieving high conciseness. However, it sacrifices informativeness; with more to convey, a slightly longer description would be justified.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's simplicity (single parameter, no output schema), the description is too minimal. It captures the basic purpose but lacks details on return values, error conditions, or behavioral context needed for reliable AI invocation. The agent must infer too much.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema covers 100% of the parameters with descriptions (e.g., 'platform: Platform type: android or ios'), so the baseline is 3. The description does not add any additional parameter context beyond what the schema already provides, but it does not reduce clarity either.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Register') and the resource ('a new device to the device pool'), providing a specific verb+resource. However, it does not distinguish itself from the sibling tool 'register_ios_device' which suggests a more specific use case. The input schema reveals it handles both 'android' and 'ios' platforms, but this is not mentioned in the description.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided on when to use this tool versus alternatives like 'register_ios_device'. The description lacks context about prerequisites, suitability, or exclusions. An AI agent would have no basis to decide between this tool and its siblings.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
register_ios_deviceB
Register a new iOS device to the device pool. Note: depends on the upstream iOS service and may be temporarily unavailable
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
Without annotations, the description carries full burden. It adds a useful note about dependency on upstream iOS service and potential unavailability, but does not disclose other behavioral traits such as idempotency, side effects, or error scenarios.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Single sentence, front-loaded with purpose, no wasted words. Appropriate length for a tool with no parameters.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given zero parameters and no output schema, the description covers the basic purpose and a dependency note. However, it lacks information about return values, error handling, and prerequisites, which would be valuable for an agent to correctly invoke and interpret results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
There are zero parameters in the input schema, so baseline is 4. The description does not add parameter information, but none is needed since the schema is empty.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states 'Register a new iOS device to the device pool', which specifies the verb (register), resource (iOS device), and scope (device pool). However, it does not differentiate from sibling 'register_device' which may serve similar purpose for non-iOS devices.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No usage context is provided. There is no guidance on when to use this tool versus alternatives like 'register_device', nor any prerequisites or conditions for using this tool.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
search_booksB
Search for books on FanQie (Tomato) Novel platform by keywords. Supports searching for novels, audiobooks, comics, and short dramas.
| Name | Required | Description | Default |
|---|---|---|---|
| key | Yes | Search keyword to find books | |
| offset | No | Offset for pagination | |
| tab_type | No | Content type: 3=novel, 2=audiobook, 8=comic, 11=short drama |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must disclose behavioral traits. It fails to mention pagination behavior, rate limits, authentication needs, or handling of empty results. Only mentions search capability without operational context.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two clear, front-loaded sentences with no extraneous information. Efficiently conveys the tool's purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
No output schema and no description of return format or pagination results. For a search tool, more context about output shape is needed. Sibling tools exist but are not referenced.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema covers all 3 parameters with descriptions (key, offset, tab_type). Description adds high-level context (FanQie platform, content types) but does not surpass schema's detail. Baseline 3 is appropriate.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
Description clearly states it searches for books on FanQie platform by keywords, listing supported content types (novels, audiobooks, comics, short dramas). This distinguishes it from sibling tools like get_book_detail which retrieve specific book details.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Description implies it should be used for keyword-based discovery, but does not explicitly state when to use vs alternatives (e.g., get_book_detail). No guidance on when not to use or prerequisites.
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.
14 tool updates
v0.1.2- First observed
get_book_detail - First observed
get_book_directory - First observed
get_chapter_content - First observed
get_comments - First observed
get_content - First observed
get_device_pool_status - First observed
get_device_status - First observed
get_ios_content - First observed
get_manga_progress - First observed
get_raw_content - First observed
get_simple_directory - First observed
register_device - First observed
register_ios_device - First observed
search_books
TDQS
Scored across 14 tools
Multiple tools have overlapping purposes: get_chapter_content, get_ios_content, get_raw_content, and get_content all retrieve chapter content, making it unclear which to use. Similarly, get_book_directory and get_simple_directory serve the same function with different verbosity. Device registration and status tools are unrelated to the core content domain, adding confusion.
Most tools follow a 'get_X' or 'register_X' verb_noun pattern, but there are minor deviations such as 'search_books' and 'get_simple_directory' (adjective between verb and noun). The naming is mostly consistent and predictable.
With 14 tools, the count is well within the typical 3-15 range for a focused server. Each tool serves a clear purpose in the domain of book content retrieval and device management, though some redundancy exists.
The tool surface covers basic read operations (search, get details, get directory, get content, get comments) for books, audiobooks, manga, etc. However, there are no tools for creating, updating, or deleting content, nor for user authentication or advanced search filtering. The device management tools seem out of place for a content-focused server.
Maintenance
Related MCP Connectors
AI-native fiction platform. Any AI can register, read, search and co-author novels via MCP or REST.
MCP server for Russian books search, details, and recommendation candidates.
Chinese web novel MCP: 36 tools (outline, prose, review, coach, KD export). BYOK, no API key.
Search Chinese books with Douban ratings, AI book guides and curated toplists. Free, no API key.
Related MCP Servers
- AlicenseAqualityCmaintenanceMCP server for Fanqie novel author backend, enabling multi-novel management, reading statistics analysis, and chapter publishing with scheduling.612MIT
- FlicenseAqualityFmaintenanceEnables searching web novels by title, retrieving novel metadata and chapter lists, and reading free chapter content from Webnovel.com via MCP tools.51-
- AlicenseNot gradedqualityAmaintenanceEnables multi-source search and verified download of public-domain and open-license ebooks (Chinese/English) through a unified MCP interface.1MIT
- AlicenseAqualityCmaintenanceEnables MCP clients to access WeChat Reading data and actions, including book search, book details, reading progress, highlights, reviews, and reading statistics, via a URL-based SSE or Streamable HTTP server.191Apache 2.0