Skip to main content
Glama

番茄雷达 Fanqie Radar

番茄小说榜单 · 扫榜选书工作台 · MCP Server · 开源 Agent Skill —— 复制一个「懂网文选书的 AI 编辑」到你的写作工作流 零配置、零第三方运行时依赖,纯 Python 标准库。开箱自带当天完整真实榜单快照(女频/男频 × 阅读榜/新书榜,730+ 本书),内置极速扫榜采集器,克隆即用;一键安装为 Agent Skill(Claude Code / Codex / Cursor / Trae)。

在 Claude Code / Cursor / WorkBuddy / 任意 MCP 客户端里直接问「现在女频什么火」「这本适合仿写吗」「豪门总裁赛道最近什么套路吃香」,它就答。也可以打开自带的可视化看板,像人一样翻封面、扫书名、看在读、收藏候选、追题材热度。

看板

关键词:番茄小说 · 番茄榜单 · 扫榜 · 网文数据 · 网文选题 · 题材热度 · 仿写选书 · AI 写作 · AI 网文写作 · 网文工具包 · MCP · Model Context Protocol · MCP Server · Agent Skill · Claude Code · Codex · 数据看板 · data analysis · webnovel


它解决什么

网文作者 / AI 写作从业者天天要回答三个问题:现在什么题材火?哪本书适合仿?为什么?

市面上番茄榜单爬虫一大堆,但爬完就扔给你一堆书名。真正稀缺的是选书判断力——这本能不能仿、仿出来质量天花板在哪。本项目把方寸写作跑过真金白银验证过的六维仿写选书评分模型开源出来,并包成 MCP 服务,让你的 AI 助手直接具备这套判断力——不是拍脑袋觉得「这书很火」,而是数据驱动地告诉你「这书为什么值得仿、怎么仿」。

差异化(为什么值得装)

能力

普通榜单爬虫

本仓库

榜单数据

✅(自备快照,附示例数据)

题材热度聚合

偶尔

跨榜强信号(新书即爆款)

多日趋势差分

仿写适合度评分

六维 + 加成,数据驱动

可视化扫榜看板

接入 AI 助手(MCP)

上手成本

要配数据源

零配置,装完即用

评分模型是核心资产,不是拍脑袋的硬规则——维度权重、阈值都来自实测反馈(详见下方「评分模型」)。


Related MCP server: Google Trends MCP Server

三条红线(开源版铁律)

  1. 核心库不内置版权正文。 包内附的是公开榜单元数据快照(书名/作者/在读/分类/封面,采集自番茄小说公开榜单页);不提供、不内嵌任何小说正文。真实数据可随时用自带采集器刷新,见下方「扫榜采集」。

  2. 不提供「下载整本小说」能力。 MCP 只返回 book_id / url,让你自己去处理。

  3. MCP 对外投影不返回 intro 简介全文 / cover 版权图 URL(书目只含:book_id、标题、作者、品类、在读、状态、章节数、url)。本地看板点击书名可看简介——渲染的是用户本地自有快照,按需单本拉取,不经仓库分发、不进 MCP。


快速开始(零配置)

1. 安装

git clone https://github.com/WindXRan/fanqie-radar.git
cd fanqie-radar
pip install .           # 需要 Python >= 3.10,零第三方依赖

不装包也能直接跑:python -m fanqie_index.mcp_server

2. 直接用(什么都不用配)

开箱即带当天完整真实快照(女频/男频 × 阅读榜/新书榜,730+ 本书)——克隆下来就能跑通全部工具和看板:

fanqie-radar            # MCP stdio 服务,直接挂客户端
fanqie-radar-web        # 可视化看板,浏览器打开 http://127.0.0.1:8401

3. 换上你的真实数据

把你的榜单快照放进 ./data/ 目录(或任意目录,设 FANQIE_INDEX_DATA_DIRS 指过去)。命名规范见下方「数据格式规范」。

3.5. 扫榜采集(内置 · 零依赖 · 1 分钟刷新全站)

内置采集器直接解析番茄小说公开榜单页(HTTP 请求 + 页面数据提取,标准库 urllib,无 Playwright、无浏览器、零第三方依赖),把数据保存为本地 JSON 快照。全站 4 个榜(女频/男频 × 阅读榜/新书榜,74 个分类)仅需约 1 分钟

看板一键采集(推荐):打开看板 → 点击顶栏「🔍 扫榜」→ 点「开始采集」,进度实时滚动,完成后看板自动刷新——全程无需终端。

命令行采集(进阶):

fanqie-radar-scrape                      # 采集全部 4 个榜(约 1 分钟)
fanqie-radar-scrape --gender female --rank read  # 只采集女频阅读榜
fanqie-radar-scrape --limit 30 --sleep 1  # 控制每分类上限和间隔(秒)

采集的数据自动保存到 ./data/ 目录。合规设计:固定延迟(默认 1s/分类)、User-Agent 轮换、只采集公开榜单元数据、数据存本地不上传。

4. 挂到 MCP 客户端

Claude Desktopclaude_desktop_config.json):

{
  "mcpServers": {
    "fanqie-radar": {
      "command": "fanqie-radar"
    }
  }
}

零配置即可挂载(跑在示例数据上);要分析自己的数据,加一个 env 指向快照目录:

"env": { "FANQIE_INDEX_DATA_DIRS": "C:/path/to/your/data" }

Cursor / 其他:同样指向 fanqie-radar 命令(或 python -m fanqie_index.mcp_server)。多目录用 ; 分隔(Windows)/ :(Linux/macOS)。

5. Agent Skill(Claude Code / Cursor / Trae 等智能体一键接入)

本仓库自带 Agent Skill(skills/fanqie-radar/SKILL.md),让 AI 自动启动服务、调用 API/工具,同样零配置

一键安装(推荐)

方式一 · 生态标准 npx skills(复制命令即可,已实测验证):

npx skills add WindXRan/fanqie-radar --skill fanqie-radar --agent claude-code codex --global --yes --copy
#                                                                    ↑ 可换 cursor / trae / etc,多个用空格分隔

方式二 · 自带 CLI(零依赖、纯标准库):

pip install .                       # 装好自带 fanqie-radar-skill-install 命令
fanqie-radar-skill-install          # 交互式:选客户端 + 范围,一键装进技能库
# 常用:
fanqie-radar-skill-install --agent claude-code --global   # 装到 Claude Code 全局
fanqie-radar-skill-install --agent all --global           # 装到所有 8 个客户端
fanqie-radar-skill-install --agent cursor --local         # 仅装到当前项目
fanqie-radar-skill-install --list                         # 先看仓库内置了哪些

npx skills 支持 Claude Code / Cursor / Codex / Trae 等主流客户端(--agent 可多选,用空格分隔);自带 CLI 支持 Claude Code / Cursor / Trae / GitHub Copilot / Cline / Gemini CLI / Codex / OpenCode(--agent all 一次全装)。装完重启客户端生效。


可视化看板(引流门面)

孟菲斯风格(Memphis Design)暖杏工作台:珊瑚粉顶栏 × 墨线描边 × 彩色硬阴影 × 波点锯齿 × 胶囊按钮——把冷冰冰的数据做成年轻化的选书工具。零依赖、纯原生(无 CDN、无框架、无第三方库),一把 Python 标准库 + 一个 HTML 文件撑起整张门面,也是开源引流的主战场。

fanqie-radar-web --data <你的数据目录> --port 8401
# 浏览器打开 http://127.0.0.1:8401(不传 --data 则自动用包内快照)

看板包含:

  • 固定顶栏:品牌 / 女频·男频 × 阅读榜·新书榜四宫格切换 / 快筛工具条 / 品类快跳条——整条 sticky,下滑不消失,换榜筛选随时可用

  • 书卡流(主视图,全宽三列):封面 / 书名 / 作者·品类 / 在读大字(量级分色)/ 徽章(完结·章节数·套路命中)/ 简介前两行;品类分组小节标题 + 骨架屏 + 级联入场

  • 右侧抽屉(顶栏按钮呼出,Esc/遮罩关闭):

    • 📊 题材热度 —— 各品类在读量对比条,一眼看赛道谁在吸量

    • ⚡ 今日动静 —— 新上榜 / 掉出榜(对比同榜两份快照)

    • 🔥 热词榜 —— 点词筛同套路书

    • ★ 候选清单 —— 点 ☆ 收藏(localStorage 持久化),顶栏按钮带数量角标

  • 人类动线:点书名看完整简介 → 点热词筛同套路书 → 点题材热度条筛品类 → 收藏候选集中对比

  • 完结 / 连载中 一键筛选 + 「≥10万/≥50万」在读门槛,快速筛掉不合适的母本

  • 🔍 一键扫榜:看板内点按钮即刷新当天榜单,进度实时滚动,采完自动重渲

  • 广告位:主区横幅 + 抽屉底部各一处,放一份 web/ads.json 即可自定义(仓库附示例)

  • 无综合评分刷屏——评分模型在 MCP 工具 fanqie_imitation_score 里,看板只做「帮人扫榜」

简介弹窗

抽屉面板

滚动书卡流

切换「女频/男频」「阅读榜/新书榜」即时重渲。web/ 目录为静态资源,src/fanqie_index/web.py 为标准库 server(静态页 + /api/* 复用内核)。

数据格式规范(接入契约)

文件名:

fanqie_{gender}_{rank}_ranks_{YYYYMMDD}.json
  gender: female | male
  rank:   read(阅读榜) | new(新书榜) | peak(巅峰榜) | completed(完结池)

文件内容(两种都兼容):

{
  "date": "20260905",
  "rank_type": "女频阅读榜",
  "categories": [
    {"name": "豪门总裁", "books": [{ "title": "...", "author": "...", "reads": "24.1万",
      "intro": "(可选)...", "url": "https://fanqienovel.com/page/123", "status": "已完结",
      "chapters": 158, "bookid": "123" }]}
  ]
}
  • reads 支持 "24.1万" / "1.2亿" / 整数。

  • bookid 缺失时自动从 url/page/{id} 提取——全量书目都可被 book_id 寻址

  • intro 选填:有它评分更准确(套路/金手指命中),没有给中性分。

  • chapters 选填:章节数(番茄书籍页公开可获取),用于体量适配评分与看板徽章。

  • 也兼容平铺格式 {"books": [...], ...}(每本自带 category)。

可选:章节/状态缓存<数据目录>/meta_cache.json)——榜单快照通常不含章节/状态, 本仓库不抓取,由你自己的外部工具补全后放到数据目录即可,看板自动合并(mtime 热更新,改完即生效):

{ "<book_id>": { "chapters": 158, "status": "已完结" } }

快照缺字段时用缓存补,快照有值不覆盖。没有缓存文件看板照常工作(章节数显示 "—")。


工具清单

工具

作用

fanqie_ranks

读取最新榜单(频道/榜型/品类过滤)

fanqie_find

跨全部快照按书名/作者查找 → book_id

fanqie_trend

多日趋势差分:新上榜 / 掉榜 / 排名变化 / 在读增长(需 ≥2 份同榜快照)

fanqie_genre_heat

题材热度(按在读总量排序)

fanqie_imitation_score

核心:六维仿写选书评分(另支持男频连载母本评分 serial=true

fanqie_hotwords

书名热词频次

fanqie_stats

数据概览(快照数 / 书目数 / book_id 覆盖率)


评分模型(六维 + 加成)

完结短书(女频主体)六维权重:

维度

权重

含义

完结度

20%

已完结=100 / 连载中=40(可一次性拆全本)

体量适配

20%

90–220 章最优;<70 章弧线不足,>450 章强缩写丢尾

单本热度

15%

在对数归一后的在读量级(避免头部吃光分数)

题材吸量

15%

所在类目的吸量指数(在数据驱动聚合的 heat 基础上)

套路密度

15%

简介命中的套路词数(骨架清晰度代理)

金手指清晰

15%

命中 1–2 种金手指=满分;0 种=不明;≥3 种=堆叠降分

加成项(有则加,无则跳过): 持续在榜天数(≤+8,套路耐看)、新书榜命中(+6,近期起量)、跨榜(≥2 榜,+4)、巅峰榜(+8,平台月度精选,女频专属再 +4)。

男频连载母本评分(serial=true): 维度换成 连载体量 25% / 在读 25% / 更新活跃 15% / 题材吸量 15% / 套路 10% / 金手指 10%——与女频「短完结」相反,母本追求 450 章+ 连载长书 + 日更活跃。

所有阈值来自实测(如「百万字长书不作仿写源」「≈220–450 章的连载体量最优」;历史字数阈值按 2250 字/章折算为章节数),详见 src/fanqie_index/scoring.py 内各函数 docstring 的调研出处。


开发

pip install -e ".[dev]"
pytest                      # 21 个测试

结构:

src/fanqie_index/
  schema.py      榜单快照:目录探测 / 元数据解析 / 书目归一 / 查找 / 统计
  scoring.py     六维评分 + 男频连载评分(词表 + 维度函数 + 加权)
  analysis.py    题材热度 / 跨榜强信号 / 书名热词 / 多日趋势差分
  mcp_server.py  stdio MCP 服务入口(手写 JSON-RPC,零第三方依赖)
  sample_data/   包内真实榜单快照(采集日当天公开榜单元数据,零配置兜底 + 开箱即用)
examples/sample_data/   同款真实快照(仓库副本)
skills/fanqie-radar/    Agent Skill(智能体一键接入)
tests/                  pytest 冒烟测试

调试 MCP: 直接往 stdin 发 newline-delimited JSON-RPC:

python -c "
import subprocess,os,json
inp=[json.dumps({'jsonrpc':'2.0','id':1,'method':'initialize','params':{}}),
     json.dumps({'jsonrpc':'2.0','id':2,'method':'tools/list'})]
p=subprocess.Popen(['python','-m','fanqie_index.mcp_server'],stdin=subprocess.PIPE,stdout=subprocess.PIPE,encoding='utf-8',env=os.environ)
print(p.communicate('\n'.join(inp)+'\n')[0])
"

免责声明

本项目仅提供数据读取 / 分析 / 评分的工具能力。数据由使用者自行负责采集与合规,须遵守相关平台的服务条款与所在地法律法规,仅供个人学习与研究使用。本仓库不对使用者采集、持有或使用数据的行为承担任何责任。

License

MIT © 方寸写作 (FangCun Studio)

Available Tools

7 tools
fanqie_findA

跨全部快照按书名/作者模糊查找,返回 book_id 与书目信息。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo返回条数
queryYes书名或作者关键词

TDQS

A4.2/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 and does disclose the key behaviors: fuzzy matching, cross-snapshot scope, and the returned fields (book_id and bibliographic info). It does not mention ordering, pagination, or potential cost of scanning all snapshots, but these are secondary for a simple lookup 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?

A single sentence packs the verb, resource, scope, matching mode, and result. There is no filler or redundancy; the important operational details are front-loaded.

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 a simple two-parameter search with no output schema and no annotations, the description adequately states what the tool does and returns. It could be more explicit about result ordering or the structure of '书目信息', but nothing essential for invoking it correctly is missing.

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

Parameters3/5

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

Schema coverage is 100%: both query ('书名或作者关键词') and limit ('返回条数') are already described in the input schema. The description only restates the query concept and adds no new parameter-level meaning, so the baseline of 3 applies.

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 concrete action ('跨全部快照按书名/作者模糊查找') with the resource and matching mode, and identifies the returned payload (book_id and bibliographic info). This clearly distinguishes it from the sibling tools, which are rankings/stats/trend tools rather than title/author lookup.

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 phrase '按书名/作者模糊查找' provides a clear usage context: use this tool when the agent has a book title or author keyword and needs to locate a book across snapshots. It does not explicitly name alternative sibling tools or say when not to use it, so it stops short of a 5.

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

fanqie_genre_heatB

题材热度聚合(按在读总量排序),识别当前吸量赛道。

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
rankNoread
channelNofemale

TDQS

B3.4/5.0
Behavior3/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 does disclose a key behavioral trait: results are sorted by total reads ('按在读总量排序') and reflect current conditions ('当前'). However, it does not explain response shape, aggregation granularity, or how the 'new' rank differs, leaving meaningful gaps.

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

Conciseness5/5

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

The entire description is one compact, information-dense sentence. It front-loads the core purpose and the most important sorting behavior without filler or redundancy.

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

Completeness2/5

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

With three optional parameters, no output schema, and no annotations, the description should explain how to control top N, ranking mode, and channel. It does not, leaving the agent without enough information to use the tool beyond its defaults.

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?

Schema description coverage is 0%, and the description only indirectly references the 'read' ranking mode via '按在读总量排序'. The 'top', 'rank', and 'channel' parameters and their enums are not explained, so an agent cannot confidently know how to set them for different needs.

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 aggregates genre heat and identifies currently popular categories ('题材热度聚合', '识别当前吸量赛道'), with a specific sorting criterion. It does not explicitly name or contrast sibling tools, but the genre-heat focus is sufficiently distinct from generic ranks, trends, and hotwords.

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 phrase '识别当前吸量赛道' gives clear context: use this tool to see which genres are attracting reads right now. It does not state when not to use it or name alternatives, but the intended use case is reasonably explicit.

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

fanqie_hotwordsB

书名热词频次统计(基于套路词表),快速看当前书名流行词。

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo
rankNoread
channelNofemale

TDQS

B3.1/5.0
Behavior3/5

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

There are no annotations, so the description carries the full behavioral burden. It does disclose that the tool uses a '套路词表' and performs frequency statistics, which is useful. Yet it omits details about return values, aggregation behavior, or any side effects, leaving important behavior unexplained.

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

Conciseness5/5

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

The description is a compact single sentence with no filler. It front-loads the core function and then adds a usage-oriented summary, making it easy to scan; every part contributes meaning.

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

Completeness2/5

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

For a tool with no annotations, no output schema, and three undocumented parameters, this description is incomplete. An agent would still be guessing what 'rank' values mean, how 'top' behaves, and whether results differ across channels, so the definition is not sufficient for correct invocation.

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?

Schema description coverage is 0%, and the description does not explain any of the three parameters: 'top', 'rank', or 'channel'. The enum values like 'read' and 'new' are ambiguous without clarification, and the description does not compensate for the missing schema documentation.

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 identifies the action ('频次统计' / frequency counting) and target resource ('书名热词' / hot words in book titles). It also specifies the basis ('基于套路词表'), making it fairly specific among sibling tools, though it does not explicitly differentiate itself from them.

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 this tool is for quickly viewing currently popular book-title words, giving some usage context. However, it provides no explicit when-to-use or when-not-to-use guidance and does not mention any sibling alternatives.

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

fanqie_imitation_scoreA

【核心】仿写选书六维评分(完结度/体量适配/单本热度/题材吸量/套路密度/金手指清晰 + 稳定性/跨榜/巅峰加成)。也可切男频连载母本评分。用于在读爆款里筛出'最适合仿写'的书,并给出每本的分数拆解。

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo返回评分 Top N
rankNoread
serialNotrue=男频连载母本评分(连载体量×在读×更新活跃×吸量×套路×金手指)
channelNofemale

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the behavioral burden. It discloses that scores come from a six-dimension formula plus bonuses and explains the serial-mode formula ('连载体量×在读×更新活跃×吸量×套路×金手指'). However, it does not state whether output is sorted, what the score range or format is, or whether there are side effects, which is a notable gap for a tool with no annotations and no output schema.

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?

Two dense sentences front-load the core purpose and then give the mode variant and intended use. Every sentence adds information, though the slash-separated jargon list ('套路密度/金手指清晰') makes the description slightly harder to parse.

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

Completeness2/5

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

Moderate complexity with four optional parameters, no annotations, and no output schema requires more detail about the score breakdown, sorting, and how rank/channel map to the modes. The description explains the 'why' and scoring dimensions, but an agent would still be guessing about the return shape and the meaning of two parameters.

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

Parameters3/5

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

Schema description coverage is 50%: top and serial have descriptions, while rank and channel are bare enums. The description adds meaning to serial mode and to the scoring dimensions, and implies female as the default by mentioning male serial mode as a switch, but it does not explain rank (read/new/completed) or channel (female/male). The description compensates partially but not fully.

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

Purpose4/5

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

The description names a concrete operation ('仿写选书六维评分') and identifies the resource ('在读爆款') and output ('给出每本的分数拆解'), so an agent can understand the purpose. It does not explicitly distinguish itself from sibling tools like fanqie_ranks or fanqie_trend, but the scoring focus is distinctive enough to avoid confusion.

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 states the intended scenario ('用于在读爆款里筛出最适合仿写的书') and provides a conditional mode switch ('也可切男频连载母本评分'), which gives usable context. It does not name alternatives or say when not to use this tool instead of fanqie_find or fanqie_stats.

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

fanqie_ranksA

读取最新番茄榜单(按频道/榜型/品类)。返回书名、作者、在读、状态、章节数、book_id——不含简介全文与版权图。

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo返回条数
rankNo榜单类型:阅读榜/新书榜/巅峰榜/完结池read
channelNo频道,默认 femalefemale
categoryNo品类关键词过滤(可选),如 '豪门总裁'

TDQS

A3.8/5.0
Behavior4/5

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

无 annotations,描述承担了行为披露责任。它明确列出返回字段(书名、作者、在读、状态、章节数、book_id),并主动说明'不含简介全文与版权图',让代理知道不会得到哪些内容。若补充数据时效性说明会更完整。

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?

一句话同时包含动作、筛选维度、返回字段和明确排除项,信息密度高且没有冗余。关键信息前置,结构干净。

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?

对于只读榜单查询工具,描述列出的返回字段和排除项配合 100% 参数覆盖的 schema 已足够支撑正确调用。缺少兄弟工具的选择指引,但整体信息完整度良好。

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 对 4 个参数的描述覆盖率为 100%,每个参数的含义、默认值和枚举都有说明。描述文本本身没有额外补充参数格式或边界,因此按规则给予基线 3 分。

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

Purpose4/5

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

描述以'读取最新番茄榜单'明确了动作与资源,并列出可选的频道/榜型/品类维度,功能指向清晰。虽然没有明确对比兄弟工具,但'榜单'、'按频道/榜型/品类'的具体范围足以让代理区分于搜索、趋势、热度等兄弟工具。

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?

描述通过'最新番茄榜单'暗示了适用场景:需要获取榜单数据时使用。但没有明确说明何时不应使用、或与 fanqie_trend、fanqie_genre_heat 等兄弟工具的取舍,属于可用但未充分引导。

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

fanqie_statsA

数据概览:快照数量、书目总数、book_id 覆盖率、被探测到的数据目录。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/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 does disclose the scope of the output (snapshot count, book_id coverage, detected directories), which is useful. However, it does not mention the return format, whether the operation is purely read-only, or any other behavioral traits such as scanning/probing implications.

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

Conciseness5/5

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

The description is a single compact sentence that front-loads the category ('数据概览') and then lists the specific data points it covers. There is no redundant or filler content.

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 zero-parameter, simple stats tool with no output schema, the description names the key pieces of returned information. It is adequate for an agent to understand what invoking this tool will provide, though it could be slightly stronger with an explicit statement of its read-only nature or output structure.

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

Parameters4/5

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

The tool has zero parameters and the schema is empty, so parameter explanation is not needed. The description adds context about what the tool reports, which is sufficient given there is nothing for the caller to configure.

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 identifies the tool as a data-overview/stats tool by naming specific metrics: snapshot count, total bibliography count, book_id coverage, and detected data directories. This aligns with the tool name 'fanqie_stats' and distinguishes it from ranking/find/trend siblings in substance, though it does not explicitly name or contrast them.

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 about when to choose this tool over the sibling tools such as fanqie_ranks, fanqie_find, or fanqie_trend. The description only implies an overview/statistics use case, with no explicit when-to-use, when-not-to-use, or alternative recommendations.

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

fanqie_trendA

多日趋势差分:对比同一榜单最新两份快照,给出新上榜/掉榜/排名变化/在读增长。需 data/ 下存在至少两份同榜快照。

ParametersJSON Schema
NameRequiredDescriptionDefault
topNo参与差分的榜单条数(取前 N)
rankNoread
channelNofemale

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosing behavior. It does state the core behavior and the data prerequisite, and it lists the kind of differences computed. However, it does not explain what happens when fewer than two snapshots exist, whether the operation is read-only, or how results are structured.

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?

Two short, dense sentences. The purpose and the key prerequisite are both front-loaded, and there is no filler or repetition of schema information.

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?

The description gives the high-level output categories and one prerequisite, but with no output schema and no annotations, it leaves open how results are formatted, how errors are surfaced, and how parameters map to the snapshot selection. Adequate for a simple diff tool, but not complete.

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?

Schema description coverage is only 33%, and the description does not compensate. It never explains the meaning or role of 'top', 'rank', or 'channel' beyond the schema's sparse definitions, leaving two enum parameters with no added semantic guidance. The phrase '同一榜单' hints at snapshot identity but does not clarify how rank/channel select that snapshot.

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 uses a specific verb ('对比') and a clear resource ('同一榜单最新两份快照') and lists the concrete outputs: new entries, dropped entries, rank changes, read growth. It is clear and meaningful, though it does not explicitly name or contrast sibling tools like fanqie_ranks.

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 a clear context for use — comparing the latest two snapshots of the same ranking to detect trends — and explicitly states the precondition that at least two snapshots must exist under data/. It lacks explicit 'when not to use' or named alternatives, but the context is sufficient for an agent to decide.

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. 7 tool updatesv0.2.0
    • First observedfanqie_find
    • First observedfanqie_genre_heat
    • First observedfanqie_hotwords
    • First observedfanqie_imitation_score
    • First observedfanqie_ranks
    • First observedfanqie_stats
    • First observedfanqie_trend

TDQS

A3.8/5.0

Scored across 7 tools

Disambiguation5/5

Each tool targets a distinct analytical concern: raw rankings, lookup, trend diff, genre aggregation, imitation scoring, keyword frequency, and data stats. Even the two heat-related tools are clearly separated by dimension: genre read volume vs. title-word frequency.

Naming Consistency5/5

All tool names share the fanqie_ prefix, use lowercase snake_case, and combine the server domain with a descriptive noun or verb. The naming pattern is predictable and makes the set feel uniform.

Tool Count5/5

Seven tools is a well-scoped size for a domain-specific ranking-analysis server. Each tool has a clear purpose and none feel redundant or ornamental.

Completeness4/5

The core analysis workflow—read rankings, search books, compare trends, assess genre heat, and score imitation candidates—is fully covered. The main gap is the absence of an explicit snapshot-capture or refresh tool to ensure trend data is available, though this may be handled externally or by the fetch path.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers