Skip to main content
Glama
albertm88

pdf-rescue-mcp

by albertm88

中文 PDF 书籍救援 MCP

Python License: GPL v3 MCP

中文 | English

面向中文书籍 PDF 的本地 MCP 服务与命令行工具。支持扫描版 PDF 的 OCR 文本提取、质量巡检、断点续传和批量处理。

当前发布线:1.0.0 · 架构文档


目录


Related MCP server: MCP PDF Reader Server

快速开始

第一步:环境准备

必需项

需求

最低版本

说明

Python

3.11

下载地址,安装时勾选"添加到 PATH"

uv

最新

Python 包管理器,安装指南,安装后重启终端

网络

首次运行时需联网下载中文 OCR 模型(约 50-100 MB),后续离线可用

# 验证
python --version   # 应 ≥ 3.11
uv --version       # 应正常输出版本号

平台说明

平台

支持情况

Windows 10/11

✅ 完全支持,CPU + NVIDIA GPU

macOS

✅ CPU 模式可用,GPU 加速需单独验证

Linux

✅ CPU 模式可用,GPU 需自行安装 CUDA 驱动

GPU 加速(可选)

条件

要求

显卡

NVIDIA GTX 10 系列及以上(计算能力 ≥ 6.1),✅ GTX 1060 6G 已验证

驱动

已安装 NVIDIA 驱动,nvidia-smi 可正常输出

CUDA

11.8(由 uv sync --extra ocr-gpu 自动安装,无需手动配置)

显存

建议 ≥ 4 GB(GTX 1060 6G 实测 book-fast 3-5 秒/页),显存不足自动降级为 CPU 模式

ocr-gpu 扩展会在 Windows 上自动安装 CUDA 11.8、cuDNN 8.9 等全套 NVIDIA 依赖,无需额外安装 Visual C++ 运行库。

可选外部工具

体检命令会检测以下工具,缺失不影响核心功能:

工具

用途

安装方式

Tesseract

备用 OCR 引擎(PaddleOCR 不可用时降级)

winget install tesseractGitHub

Ghostscript

PDF 底层渲染与修复

winget install ghostscript官网

OCRmyPDF

文本层修复

pip install ocrmypdf

qpdf

PDF 结构检查

winget install qpdf官网

poppler (pdftoppm)

备用 PDF 转图片

winget install popplerpoppler

首次运行

首次 OCR 提取时,PaddleOCR 会自动从模型库下载 PP-OCRv6 中文识别模型。请保持网络通畅,下载完成后后续均可离线使用。模型缓存在 ~/.paddleocr/ 目录。

第二步:克隆并安装

git clone https://github.com/albertm88/pdf-rescue-mcp.git
cd pdf-rescue-mcp

场景

安装命令

说明

日常使用(CPU)

uv sync --extra ocr

适用所有平台

NVIDIA 显卡加速

uv sync --extra ocr-gpu

CUDA 11.8,3-5 倍提速

第三步:体检确认

uv run python -m pdf_rescue_mcp.cli 体检

正常输出应包含:CPU 核心数、可用内存、OCR 引擎状态等信息。

第四步:配置 MCP 客户端

生成带绝对路径的配置文件,避免客户端找不到启动脚本。

uv run python scripts/generate_mcp_config.py --client vscode     --output .vscode/mcp.json
uv run python scripts/generate_mcp_config.py --client claude     --output ~/claude-mcp.json
uv run python scripts/generate_mcp_config.py --client cursor     --output ~/cursor-mcp.json
uv run python scripts/generate_mcp_config.py --client anythingllm --output ~/anythingllm-mcp.json
uv run python scripts/generate_mcp_config.py --client trae       --output .trae/mcp.json
uv run python scripts/generate_mcp_config.py --client codex      --output ~/codex-mcp.toml

手动配置:复制 examples/ 下的模板,将 {{PROJECT_ROOT}} 替换为项目绝对路径。VS Code 用户可直接用 examples/mcp-config.vscode.json${workspaceFolder} 无需替换)。

第五步:开始使用

在 MCP 客户端中直接对 AI 说:

帮我把 D:\扫描书籍\某某书.pdf 转成文字

AI 会自动调用 rescue_pdf 完成 诊断 → 规划 → OCR → 质检 全流程。

📁 处理结果保存在:<PDF 同级目录>/pdf_rescue_output/<书名>-rescue-result/


批量处理书库

适合大量 PDF 批量 OCR 的场景。

# 1. 扫描书库
uv run python -m pdf_rescue_mcp.cli 书库扫描 <书库目录>

# 2. 启动批量提取(后台运行,支持断点续传)
uv run python -B scripts/batch_extract_all.py

批量控制器能力:

  • 🔍 自动发现书库中所有 PDF

  • 📊 按 CPU/内存/worker 实时占用动态分配并发

  • 💾 逐页缓存,中断重启自动从断点继续

  • 📈 每 30 秒输出进度报告(已完成/进行中/排队、页数、ETA、资源占用)

自定义书库路径: 修改 scripts/batch_extract_all.py 中的 ROOTOUTPUT 变量。


识别模式

模式

DPI

适用场景

速度(CPU)

速度(GTX 1060 6G)

book-fast

180

快速预览、大批量处理

8-30 秒/页

3-5 秒/页

book-balanced

220

日常使用 ⭐ 默认

15-45 秒/页

5-10 秒/页

book-quality

300

高质量输出

30-90 秒/页

10-20 秒/页

book-forensic

300+

取证级、低质量扫描件

60-180 秒/页

20-40 秒/页


输出结构

<输出目录>/<书名>-rescue-result/
├── 状态.json              # 实时进度(页数、速度、ETA、引擎)
├── 清单.yaml              # 处理清单和配置
├── 文本/
│   └── 全书.md            # 合并的全文 Markdown
├── 数据/
│   ├── 页面.jsonl         # 逐页文本 + 置信度 + 来源
│   ├── 质量.json          # 质量报告
│   ├── 低置信页.jsonl     # 低置信页详情
│   └── 失败页.jsonl       # 失败页详情
├── 缓存/
│   └── 页面OCR/           # 逐页 OCR 缓存(断点续传)
├── 审计/
│   └── 审计.html          # 可视化质量审计报告
└── 日志/                  # 子进程运行日志

命令行用法

除 MCP 客户端外,也可直接在终端操作:

# ── 诊断 ──
uv run python -m pdf_rescue_mcp.cli 体检                    # 环境体检
uv run python -m pdf_rescue_mcp.cli 检查 <pdf路径>           # 检查 PDF 类型
uv run python -m pdf_rescue_mcp.cli 规划 <pdf路径>           # 规划处理路线

# ── 提取 ──
uv run python -m pdf_rescue_mcp.cli 提取 <pdf路径>           # 提取单本书
    --mode book-fast --output-dir <输出目录>

# ── 管理 ──
uv run python -m pdf_rescue_mcp.cli 状态 <任务目录>           # 查询进度
uv run python -m pdf_rescue_mcp.cli 恢复 <任务目录>           # 恢复中断任务
uv run python -m pdf_rescue_mcp.cli 质检 <任务目录>           # 质量巡检

# ── 批量 ──
uv run python -m pdf_rescue_mcp.cli 书库扫描 <书库目录>       # 扫描书库
uv run python -m pdf_rescue_mcp.cli 书库提取 <书库目录>       # 批量提取
    --output-dir <输出目录> --mode book-fast

后处理:条目拆分

OCR 完成后,可将全书按百科条目拆分为独立 Markdown 文件:

uv run python scripts/split_into_entries_v2.py <rescue-result目录> <最终输出目录>

输出结构:

<最终输出目录>/<书名>/
├── 前言/
│   └── 前言与凡例.md
├── 条目/
│   ├── 鳖甲.md
│   ├── 冰硼散.md
│   └── ...
└── 索引.md

MCP 工具参考

核心工具

工具

说明

rescue_pdf

首选入口:自动诊断→规划→提取→质检,传入 PDF 路径即可

extract_book_text

提取书籍文本,后台子进程运行,立即返回任务目录

get_job_status

查询任务进度(页数、速度、剩余时间、线程健康)

resume_job

恢复中断的任务(断点续传)

cancel_job

请求任务在当前页边界安全停止

audit_job_quality

质量巡检(低置信页、失败页、分裂标题检测)

get_iteration_plan

生成版本化的质量/资源改善建议,需人工批准后执行

批量处理

工具

说明

batch_extract_library

批量提取书库,后台逐本处理

get_batch_status

查看批量进度(完成数/总数、当前书籍、页数、ETA、资源占用)

stop_batch

停止批量(当前书籍继续完成)

scan_pdf_library

扫描书库,生成 PDF 清单和建议动作

诊断与规划

工具

说明

run_health_check

运行体检(CPU/内存/GPU/OCR 依赖)

inspect_pdf_text_layer

检查 PDF 文本层(扫描/原生/混合/加密)

diagnose_pdf

诊断 PDF 类型、乱码风险、扫描页比例

plan_pdf_job

规划处理路线(模式、预计耗时、引擎选择)

证据与词表

工具

说明

get_page_evidence

查看指定页的识别文本、置信度、识别块

export_page_image_evidence

导出页面渲染图片用于核对

get_term_glossary

查看术语词表

update_term_glossary

添加术语替换规则

OCR 容量调优

工具

说明

plan_ocr_capacity_profile

规划 2/4/6/8 线程与多 worker 吞吐基准

start_ocr_capacity_profile

后台执行已规划基准(仅无生产 OCR 时)

get_ocr_capacity_profile

查看页吞吐、RSS、线程利用率、质量门禁

activate_ocr_capacity_profile

激活推荐策略,仅影响之后新启动的 worker

历史记录

工具

说明

get_processing_history

查看处理历史

share_processing_history

生成可分享的历史记录(JSON / Markdown / HTML)


架构

┌─────────────────────────────────────────────────────────┐
│  VS Code / TRAE / Codex / AnythingLLM / 其他 MCP Host    │
└──────────────────────────┬──────────────────────────────┘
                           │ JSON-RPC (stdio)
┌──────────────────────────▼──────────────────────────────┐
│             FastMCP 适配器(stdio 或本机 HTTP)            │
│                                                         │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌─────────┐ │
│  │rescue_pdf│  │ 体检/诊断 │  │ 状态查询  │  │ 批量管理 │ │
│  └────┬─────┘  └──────────┘  └──────────┘  └────┬────┘ │
│       │                                         │      │
│  ┌────▼─────────────────────────────────────────▼────┐ │
│  │ LocalSupervisor / TaskStore / ProcessController  │ │
│  │  ┌─────────────────────────────────────────────┐  │ │
│  │  │ 监管层:本机 SQLite 租约 + 心跳 + 页级前进    │  │ │
│  │  │ 失联/卡页 → 安全停止 → 断点恢复              │  │ │
│  │  └─────────────────────────────────────────────┘  │ │
│  └────────────────────────┬──────────────────────────┘ │
└───────────────────────────┼─────────────────────────────┘
                            │ subprocess.Popen
┌───────────────────────────▼─────────────────────────────┐
│               子进程(隔离 OCR)                          │
│  python -u -m pdf_rescue_mcp.cli 提取                    │
│  ┌──────────┐  ┌──────────┐  ┌──────────┐  ┌─────────┐ │
│  │ 渲染页面  │→│ PaddleOCR │→│ 原子状态/缓存 │→│ 页级事件 │ │
│  └──────────┘  └──────────┘  └──────────┘  └─────────┘ │
└─────────────────────────────────────────────────────────┘

1.0 三层运行架构

层级

机制

参数

业务层

独立 OCR 子进程、逐页缓存、原子状态/JSONL

页数、进度、速度、ETA、质量证据

监管层

SQLite WAL 任务账本、fencing lease、心跳与页级前进、进程树收尾

WATCH_INTERVAL=5s, HEARTBEAT_TIMEOUT=90s, PROGRESS_TIMEOUT=600s

迭代更新层

从质量巡检和监管事件生成版本化建议,需人工审核

get_iteration_plan, strategy_version=1.0.0

跨平台运行目录

监管层默认使用操作系统标准目录(Windows %APPDATA%,macOS ~/Library,Linux XDG)。可设置环境变量覆盖:

# Linux / macOS
export PDF_RESCUE_RUNTIME_ROOT=/path/to/pdf-rescue-runtime

# Windows PowerShell
$env:PDF_RESCUE_RUNTIME_ROOT = "D:\pdf-rescue-runtime"

⚠️ SQLite 数据库仅支持本机磁盘,勿放在网络共享盘或同步盘。

可选:Streamable HTTP 模式

适用于无法启动 stdio 子进程的 MCP 客户端(仅回环地址):

$env:PDF_RESCUE_MCP_TRANSPORT = "streamable-http"
$env:PDF_RESCUE_MCP_HOST = "127.0.0.1"
$env:PDF_RESCUE_MCP_PORT = "8765"
uv run --locked --extra ocr python -B scripts/start_mcp.py

性能优化

  • 自动检测 CPU 核心数,保留 2 核给系统

  • NVIDIA GPU:安装 ocr-gpu 扩展,CUDA 加速 3-5 倍

实测平台

配置

模式

速度

AMD Ryzen 7 5800H

8 核 16 线程 · CPU

book-fast

8-15 秒/页

NVIDIA GTX 1060

笔记本 6 GB · GPU

book-fast

3-5 秒/页


配置参考

以下环境变量和参数可用于精细控制资源分配与监管行为。无需修改源代码,在终端设置后启动即可。

Worker 线程与并发

环境变量 / 参数

默认值

说明

PDF_RESCUE_OCR_THREADS

自动(1–4)

每个 OCR worker 的线程数。自动时按物理核心数计算,上限 4

PDF_RESCUE_MAX_WORKERS

自动(≤4)

最大并行 worker 数量。自动时按 CPU 核心与内存综合计算

自动线程分配逻辑: 物理核心 ≥ 8 → 4 线程;6–7 核 → 3 线程;4–5 核 → 2 线程;≤3 核 → 1 线程。始终预留 2 个逻辑核心给系统。

Worker 线程预算(按页数自动分配): <80 页 → 1 线程;≥80 页 → 2 线程;≥200 页 → 3 线程;≥400 页 → 4 线程。

# 示例:强制每个 worker 用 2 线程,最多 3 个并行 worker
$env:PDF_RESCUE_OCR_THREADS = "2"
$env:PDF_RESCUE_MAX_WORKERS = "3"

内存控制

环境变量 / 参数

默认值

说明

PDF_RESCUE_RESERVE_MEMORY_GB

2.0 GB

为系统保留的内存,低于此值不再启动新 worker

PDF_RESCUE_MEMORY_PER_WORKER_GB

2.0 GB

每个 worker 的预估内存占用,用于计算内存槽位

可用内存槽位 = (可用内存 - 保留内存) ÷ 每 worker 内存。结合 CPU 核心约束取最小值决定实际并发数。

# 示例:大内存机器,每个 worker 分配 4 GB,保留 4 GB 给系统
$env:PDF_RESCUE_RESERVE_MEMORY_GB = "4"
$env:PDF_RESCUE_MEMORY_PER_WORKER_GB = "4"

监管超时机制

参数

默认值

说明

WATCH_INTERVAL

5 秒

任务看门狗轮询间隔

HEARTBEAT_TIMEOUT

90 秒

Worker 心跳超时:超时无心跳视为失联

PROGRESS_TIMEOUT

600 秒

进度超时:存活但无页级推进视为卡死

STARTUP_TIMEOUT

120 秒

启动超时:等待 worker 首次心跳

CANCEL_GRACE

45 秒

取消宽限期:发送取消信号后等待优雅退出

MAX_AUTO_RESTART

1

异常退出后最大自动重启次数

批量控制器

参数

默认值

说明

PAGE_RATE_SAMPLE_WINDOW

300 秒

页速采样滑动窗口

PAGE_RATE_MAX_SAMPLES

12

页速最大保留样本数

OBSERVER_TAKEOVER_INTERVAL

5 秒

被动观察者接管轮询间隔

CONTROLLER_LEASE_SECONDS

45 秒

批量控制器本地排他租约 TTL

LEASE_SECONDS

45 秒

单任务 MCP 适配器租约 TTL

容量调优门禁

参数

默认值

说明

整机 CPU 安全护栏

92%

调优试验期间 CPU 超过此阈值则拒绝候选方案

吞吐提升阈值

5%

多 worker 方案须比最佳单 worker 基线提升的最低比例

质量回退容忍度

3%

多 worker 方案允许的低置信页比例回退上限

品质阈值

参数

默认值

说明

LOW_CONFIDENCE_THRESHOLD

0.9

置信度低于此值触发质量警告

LOW_CONFIDENCE_RETRY_DPI

300

低置信页自动重试 DPI

LOW_CONFIDENCE_MIN_TEXT_RATIO

0.85

低置信重试的最小文本比例

运行目录

环境变量

默认值

说明

PDF_RESCUE_RUNTIME_ROOT

OS 标准目录

监管层运行时持久化根目录(SQLite 账本等)

⚠️ 以上超时、窗口等参数目前为硬编码常量,调优需修改 src/pdf_rescue_mcp/server.py_TaskManager 类属性。后续版本将支持环境变量覆盖。


常见问题

CPU 模式下这是正常速度。可尝试 book-fast 模式(DPI=180),或安装 NVIDIA GPU 扩展(GTX 1060 6G 实测 book-fast 仅 3-5 秒/页)。

每完成一页,OCR 结果缓存到 缓存/页面OCR/*.json。重启时自动跳过已缓存页面。

使用 rescue_pdf 时传入 password 参数。密码不会写入记录文件。


开发

# 安装开发依赖
uv sync --extra ocr --extra dev

# 运行测试
uv run pytest tests/ -v

# 代码检查
uv run ruff check src/

# 启动 MCP 服务器(调试)
uv run python -B scripts/start_mcp.py

许可证

GPL-3.0-or-later · 详见 LICENSE

Available Tools

26 tools
activate_ocr_capacity_profile激活 OCR 容量策略A

显式激活已完成基准给出的建议,供之后启动的批处理 worker 使用。不会热改、重启或中断已经运行的 OCR worker。

ParametersJSON Schema
NameRequiredDescriptionDefault
profile_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 full burden and does disclose a key behavioral trait: the activation is non-disruptive and only affects future workers. However, it does not mention whether it overwrites an existing active profile, whether it is idempotent, or what happens on invalid profile_id, leaving meaningful gaps in behavior disclosure.

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 two sentences long and front-loaded. The first sentence states the primary action and intended consumer; the second sentence immediately clarifies what it does not do. There is no filler or redundancy.

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 one-parameter activation tool with an output schema, the description covers the main effect and the side-effect boundary. However, it does not cross-reference plan_ocr_capacity_profile to explain how profile_id should be obtained, nor does it disambiguate from the sibling start_ocr_capacity_profile, which may cause confusion in a broader workflow.

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 description never mentions the sole parameter profile_id. With schema description coverage at 0%, the tool description was expected to compensate, but it provides no guidance on where the ID comes from, its format, or how it relates to the 'completed baseline recommendation' mentioned in the text.

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 ('activate') and the target resource (the OCR capacity profile recommendation from a completed baseline). It also scopes the effect to batch workers started afterward. However, it does not explicitly contrast with sibling tools like start_ocr_capacity_profile or plan_ocr_capacity_profile, so it stops short of full distinction.

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 when to use the tool—after a completed baseline—and for whom (future batch workers). It also gives a clear exclusion: it will not hot-change, restart, or interrupt running workers. No alternative tool is named, so there is no explicit 'instead of X' guidance, but the context is clear.

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

audit_job_quality巡检任务质量B

巡检已输出页面或运行中逐页缓存,发现低置信页、缺页、分裂标题残留和图表噪声残留。

ParametersJSON Schema
NameRequiredDescriptionDefault
job_dirYes
max_issuesNo
use_latest_rulesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

No annotations are provided, so the description must carry the full burden of behavioral disclosure. It says '巡检' (inspect), implying a read-only operation, but does not explicitly state that it does not modify data, whether it requires specific job state, or if it affects running jobs. It also does not mention how many issues it returns beyond the max_issues parameter, leaving agent uncertain about 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.

Conciseness4/5

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

The description is a single sentence with no fluff, front-loading the purpose and findings. It is appropriately sized for an MCP tool description. However, it could be slightly more structured by adding a separate 'use when' clause, but as-is it is concise and to the point.

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?

The tool has three parameters with no schema descriptions, no annotations, and only an output schema. The description covers the primary purpose but omits parameter semantics and behavioral caveats. While output schema exists to explain returns, the agent lacks sufficient information to invoke the tool correctly (e.g., what max_issues accepts, whether use_latest_rules matters). This is incomplete given the tool's complexity.

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. job_dir is implied by '巡检已输出页面', but max_issues and use_latest_rules are completely unexplained. The agent cannot infer what these parameters control or how to set them correctly, which is a critical 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?

The description clearly states the verb '巡检' (inspect/audit) plus the resource '已输出页面或运行中逐页缓存' (output pages or running per-page cache), and enumerates specific issues detected (low-confidence pages, missing pages, split title residue, chart noise residue). This distinguishes it from sibling tools like diagnose_pdf or run_health_check, which focus on broader health or PDF-specific diagnostics.

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 provides context on when to use: '已输出页面或运行中逐页缓存' indicates it works post-output or on running jobs. However, it does not explicitly mention alternatives or exclusions, such as 'use diagnose_pdf for detailed PDF issues' or 'do not use while job is still running'—though the 'running' mention hints at that. Clear context but no explicit negative guidance.

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

batch_extract_library批量提取书库A

按目录批量提取PDF书籍,在后台调度独立OCR worker,立即返回。用 get_batch_status 查看书本完成数、页数进度和资源调度。并发数会结合CPU线程、系统内存和每个worker的实际占用动态调整;支持断点续传。

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNobook-fast
rootYes
resumeNo
max_booksNo
output_dirNo
max_workersNo
max_pages_per_bookNo

Output Schema

ParametersJSON 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 carries the full burden and delivers useful behavioral context: background scheduling, immediate return, dynamic concurrency based on CPU/memory/worker load, and support for resumable transfers. However, it does not mention potential side effects (e.g., where output files are written) or error-handling behavior, so it is not fully transparent.

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 three short sentences, front-loaded with the primary action, and contains no redundant filler. Every sentence adds distinct value: operation, monitoring, concurrency behavior, and resume support.

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 covers the core async workflow, monitoring approach, and dynamic resource adaptation, which is valuable for a complex tool. However, with 7 parameters and no schema descriptions, it leaves significant gaps in how to invoke the tool correctly. The output schema likely covers return values, but parameter semantics remain a clear deficiency.

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%, yet the description does not explain any parameter by name. It only hints at root ('按目录'), concurrency ('并发数'), and resume ('断点续传'), but leaves mode, max_books, output_dir, max_workers, and max_pages_per_book undefined. This is insufficient for an agent to set parameters 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 clearly states a specific verb and resource: '按目录批量提取PDF书籍' (batch extract PDF books by directory), and distinguishes itself from siblings like extract_book_text by emphasizing batch processing and background scheduling. It also names the monitoring tool (get_batch_status), further disambiguating its role.

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 provides clear context: use this tool for directory-level batch extraction with immediate return and background OCR workers. It points to get_batch_status for progress monitoring, but does not explicitly state when not to use it or mention alternatives such as single-book extraction tools, so it lacks explicit exclusions.

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

cancel_job安全停止任务A

请求正在运行的书籍任务在当前页边界安全停止。请求会持久化;OCR 无响应时监管层会按跨平台进程树策略清理,MCP 不会被阻塞。

ParametersJSON Schema
NameRequiredDescriptionDefault
reasonNo用户请求停止
job_dirYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.8/5.0
Behavior5/5

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

With no annotations, the description fully carries the burden and excels: it reveals that the stop request is persisted, occurs at page boundaries, triggers a cross-platform process-tree cleanup if OCR becomes unresponsive, and guarantees the MCP will not be blocked. These are substantial behavioral details beyond a simple cancel 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?

The description is two sentences, with the core action front-loaded in the first sentence. The second sentence adds valuable technical context about persistence and cleanup, though it is dense; overall, it is efficient and earns its length.

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 description covers graceful stopping, persistence, fallback cleanup, and non-blocking behavior, and an output schema exists so return values need not be described. However, it omits edge cases like idempotency or resumability (relevant given sibling resume_job) and does not state prerequisites such as job_dir validity, leaving minor gaps.

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 coverage is 0% and the description provides no explanation of the required 'job_dir' or optional 'reason' parameters. The description mentions '请求' and '用户请求' but fails to map these to the schema, leaving the agent without any guidance on parameter meanings or formats.

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 targets a clear resource, '正在运行的书籍任务', with a precise scope, '当前页边界'. This distinguishes it from sibling tools like stop_batch, which stops batches rather than individual jobs, making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies the tool is for stopping a running book task, but it does not explicitly state when to prefer this over alternatives like stop_batch or resume_job, nor does it provide exclusions or conditions. Usage context is only implied, not clearly articulated.

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

diagnose_pdf诊断PDFA

检查PDF类型、乱码风险、扫描页比例和建议处理动作。

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
passwordNo
max_pagesNo

Output Schema

ParametersJSON 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 the burden of behavioral disclosure. It explains the tool performs analysis (checking type, risk, ratio) and provides suggestions, which implies a read-only diagnostic behavior. However, it does not disclose whether it modifies files, requires specific permissions, or how it handles password-protected PDFs.

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 concise sentence that front-loads the core purpose and enumerates several diagnostic dimensions. It contains no filler or redundant information, earning a high score for conciseness and structure.

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 presence of an output schema covers return-value details, and the description outlines the key diagnostic outputs. However, the lack of parameter semantics and explicit usage context means the description is not fully complete for an agent to invoke the tool correctly in all scenarios.

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 schema description coverage is 0%, and the description does not mention any of the three parameters (path, password, max_pages). While 'path' is self-explanatory, the meaning and purpose of 'password' and 'max_pages' are entirely absent, leaving the agent without critical usage details.

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 '检查' (check/inspect) and clearly identifies the resource (PDF) and the aspects examined: type, garbled text risk, scanned page ratio, and recommended actions. This also distinguishes it from sibling tools that rescue, extract, or plan, making the purpose unambiguous.

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

Usage Guidelines3/5

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

The description implies the tool is used to diagnose a PDF before taking action, but it does not explicitly state when to use it over alternatives or mention any exclusions. No sibling tool alternatives are referenced, so guidance is only implicit from the tool's name and purpose.

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

export_page_image_evidence导出页面图像证据B

把指定页渲染成图片,保存到审计目录,并返回图像路径、页面记录和来源PDF;支持密码保护PDF。

ParametersJSON Schema
NameRequiredDescriptionDefault
dpiNo
job_dirYes
passwordNo
page_numberYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations provided, the description carries full responsibility. It discloses that the tool writes an image to the audit directory and can handle password-protected PDFs, which is useful side-effect information. However, it omits other behavioral traits such as whether the original PDF is modified, overwrite behavior, or required permissions.

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 primary action (render/save/return) and adds the password feature. There is no redundant 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 tool has an output schema, so return values are covered, and the description lists the key outputs. However, it lacks context about when to use this tool and does not clarify the role of job_dir or dpi, making it only partially complete for an agent.

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%, so the description must compensate. It implicitly maps 'specified page' to page_number and 'password-protected PDF' to password, but does not explain dpi or job_dir. Thus, it adds some meaning but leaves half the parameters undocumented.

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 function: rendering a specified page to an image, saving it to the audit directory, and returning image path, page record, and source PDF. This specific verb-resource combination distinguishes it from sibling tools like get_page_evidence.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives like get_page_evidence or diagnose_pdf. It does not mention any context, prerequisites, or exclusions.

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

extract_book_background后台提取书籍A

启动可恢复的整本书后台提取任务,立即返回任务目录和进程信息,适合长时间扫描书籍。

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNobook-balanced
pathYes
resumeNo
max_pagesNo
output_dirNo

Output Schema

ParametersJSON 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?

No annotations are provided, so the description carries full burden. It discloses key behaviors: resumable, asynchronous (immediate return), and background execution. However, it omits details on monitoring, cancellation, or failure modes, which are relevant for a background task.

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?

Single sentence that front-loads the action and includes key context (resumable, immediate return, suitability for long scans). No redundant or filler content.

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 covers the core purpose and basic behavior, but with 5 parameters and no parameter explanations, it is not fully complete for an agent to invoke correctly. The existence of an output schema reduces the need to describe return values, yet the lack of parameter semantics and monitoring guidance leaves gaps.

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 mention any of the 5 parameters (path, mode, resume, max_pages, output_dir). It fails to compensate for the complete lack of parameter documentation, leaving the agent without guidance on how to fill the schema fields.

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?

Description clearly states 'start a resumable whole-book background extraction task' with immediate return of task catalog and process info. This specific verb+resource+mode distinguishes it from siblings like extract_book_text (foreground) and batch_extract_library (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?

Explicitly notes it is 'suitable for long-time scanning books', providing a clear when-to-use context. Does not name alternatives or exclusions, but the background/resumable nature implies a contrast with synchronous or short-run tools.

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

extract_book_text提取书籍文本B

提取PDF为可校验的正文、分段文本、页面记录和质量审计。OCR 在独立工作进程中运行,工具立即返回,不会阻塞 MCP。用 get_job_status 查看进度和工作进程心跳。

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNobook-balanced
pathYes
resumeNo
passwordNo
max_pagesNo
output_dirNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/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 disclosure burden and does well by revealing that OCR runs in a separate worker process, the tool returns immediately without blocking MCP, and progress is tracked via get_job_status. It does not describe potential side effects like file system writes, but for a read/extraction tool this is a meaningful transparency level.

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 two sentences, front-loaded with the primary outputs and immediately followed by the key asynchronous behavior and follow-up command. Every sentence carries useful information with no filler or redundancy.

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?

An output schema exists, so return values are covered elsewhere. The description adequately explains the asynchronous nature and output types, but it omits parameter semantics, prerequisites, and how the mode/resume options affect extraction. Given the tool's complexity and 6 parameters, the description leaves notable gaps.

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 input schema has 6 parameters and 0% schema description coverage, yet the description provides no explanation for any parameter. It does not clarify the meaning of mode, resume, password, max_pages, or output_dir, and even the required 'path' is only implicitly referenced as 'PDF' in the description. This leaves the agent guessing about parameter semantics.

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 extracts PDFs into verifiable body text, segmented text, page records, and quality audits, which names the verb, resource, and output types. However, it does not explicitly differentiate itself from the sibling tool extract_book_background, which appears to serve a similar purpose.

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 provides clear context that the tool runs asynchronously and immediately returns, directing the agent to use get_job_status for progress and heartbeat. However, it does not state when to choose this tool over alternatives like extract_book_background, batch_extract_library, or plan_pdf_job, nor does it mention any exclusions or prerequisites.

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

get_batch_status查看批量任务状态A
Read-onlyIdempotent

查看批量提取的整体进度,返回书本完成数/总数、当前书籍运行时间、剩余时间、总处理页数、处理进度、处理速度,以及固定监测格式中的逐 worker 任务列表(v=完成,-=执行中)。每个活动 worker 都包含监督层实际页速、真实心跳确认 PID、OCR线程预算、进程线程、CPU整机占比、CPU等效核心和RSS内存。总 CPU 比例按整机逻辑 CPU 归一化,不把多核累计值误报为百分比。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.4/5.0
Behavior5/5

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

Annotations already mark this as read-only, idempotent, and non-destructive. The description adds valuable interpretive context, such as explaining that per-worker details include actual page speed, heartbeat-confirmed PID, and memory metrics, and importantly warns that CPU ratio is normalized to whole-machine logical CPUs to avoid misreporting cumulative multi-core values as percentages. No contradictions with annotations.

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 dense but each sentence carries significant information: the first defines the overall purpose and key metrics, the second details worker-level fields and the CPU normalization caveat. It is front-loaded with the main purpose, though the sentence structure is somewhat long. Overall, appropriate for the tool's complexity.

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 presence of an output schema (so return format is already specified), the description provides supplementary interpretation and context, including the monitoring format, worker fields, and CPU calculation semantics. It covers both batch-level and worker-level aspects, making it complete for a complex monitoring tool.

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 schema coverage is 100% (empty schema). With no parameters, the description does not need to add parameter details, so the baseline of 4 applies. The description appropriately focuses on outputs rather than inputs.

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 that this tool views overall batch extraction progress and enumerates specific metrics returned (book counts, timing, page counts, speed, per-worker task list). It uses a specific verb and resource scope, and its focus on batch-level plus worker-level monitoring distinguishes it from sibling tools like get_job_status.

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 tool's use case is implied: it is for inspecting batch extraction progress. However, it does not explicitly state when to use this tool over alternatives like get_job_status or get_processing_history, nor does it mention any exclusions or prerequisites.

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

get_iteration_plan查看迭代改善计划A

基于当前任务状态、质量巡检和监管事件生成版本化改善建议。该工具只提出可审计建议,绝不会自动改写OCR规则、更新代码或重跑任务。

ParametersJSON Schema
NameRequiredDescriptionDefault
job_dirYes
max_issuesNo
strategy_versionNo1.0.0

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.2/5.0
Behavior5/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 states the tool is non-destructive, only proposes auditable suggestions, and will never automatically modify OCR rules, code, or tasks. This is strong transparency for safe tool selection.

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 concise and well-structured: two sentences, front-loaded with the primary action, and no filler. The second sentence adds valuable safety context without unnecessary detail.

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 output schema covers return values, and the description covers purpose and safety well. However, the complete absence of parameter-level guidance and limited usage context leaves a noticeable gap for an agent selecting and invoking this tool effectively.

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% for the three parameters, and the description does not explain job_dir, max_issues, or strategy_version. It only provides high-level context like 'current task status' and 'quality inspection,' leaving the agent to infer parameter meanings from names 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 generates versioned improvement suggestions based on task status, quality inspections, and regulatory events. It also explicitly distinguishes itself from modifying tools by stating it never automatically rewrites OCR rules, updates code, or reruns tasks.

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 implies use when improvement suggestions are needed and provides a clear when-not by stating it never takes automatic actions. However, it does not name alternative sibling tools or provide explicit 'use this instead of X' guidance.

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

get_job_status查看任务状态B
Read-onlyIdempotent

读取书籍提取任务的运行时间、剩余时间、书籍名、总处理页数、处理进度、处理速度、CPU/内存资源占用率,以及低置信页、失败页和质量报告位置。监测以独立工作进程的心跳为准,不会把 Windows 包装器 PID 当作 OCR 进程。

ParametersJSON Schema
NameRequiredDescriptionDefault
job_dirYes
stalled_after_secondsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior4/5

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

Annotations already declare read-only, idempotent, non-destructive. The description adds valuable behavioral context: monitoring relies on the worker process heartbeat and does not mistake the Windows wrapper PID for the OCR process. This is beyond what annotations provide.

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 a single sentence but dense with specific fields. It is not overly long and every phrase adds value, though it is somewhat of a list and could be structured more clearly.

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 has an output schema, the description need not explain return values. It covers the key returned fields and adds a subtle liveness detail. It lacks parameter explanation, but that is partially compensated by the schema and output schema.

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 mention either parameter (job_dir, stalled_after_seconds). It gives no guidance on required values, types, or semantics, leaving the agent without additional meaning beyond the raw schema.

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

Purpose4/5

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

The description clearly states it reads job status for book extraction tasks, listing specific metrics. It is a specific verb+resource, but does not explicitly differentiate from sibling tools like get_batch_status.

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

Usage Guidelines3/5

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

The description implies usage for monitoring an active book extraction job, but provides no explicit guidance on when to use this tool versus alternatives. The heartbeat-based monitoring note gives context but no direct comparison.

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

get_ocr_capacity_profile查看 OCR 容量基准A

读取容量基准的候选、逐 worker 线程资源样本、页吞吐、质量门禁和建议;不改变任何运行中任务。

ParametersJSON Schema
NameRequiredDescriptionDefault
profile_idYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.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 burden of behavioral disclosure. It explicitly states the operation does not change any running tasks, which is an important safety guarantee for a read-only tool. It does not mention authentication, freshness, or cost, but the non-mutation guarantee is the key behavioral trait and is clearly 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 a single sentence that front-loads the resource and actions, then appends the non-mutation guarantee with a semicolon. No filler or redundant phrasing; every clause contributes meaningful 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 output schema likely covers the return fields, and the description names the main content categories. However, the description lacks parameter guidance and usage context, making it incomplete for an agent to invoke confidently without additional inference.

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 input schema has one required parameter, profile_id, but the description provides zero information about it. Schema coverage is 0%, so the description should compensate but does not even mention the parameter or explain where the ID comes from or how it relates to the capacity baseline candidates.

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 the specific verb '读取' (read) and names the resource '容量基准' (capacity baseline), enumerating the exact data it returns: candidates, per-worker samples, throughput, quality gates, and suggestions. It also distinguishes itself from mutation-oriented siblings by stating it '不改变任何运行中任务' (does not alter any running tasks), clearly marking its read-only scope.

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?

No explicit when/when-not or alternative tool is named. The read verb and the safety note imply this is for inspection, but the description does not state when to choose it over plan_ocr_capacity_profile, start_ocr_capacity_profile, or activate_ocr_capacity_profile.

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

get_page_evidence查看页面证据B

读取指定页的识别文本、置信度、识别块和警告。

ParametersJSON Schema
NameRequiredDescriptionDefault
job_dirYes
page_numberYes
include_blocksNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It only states a read operation but does not disclose whether any side effects occur, what job state is required, or how errors are handled. There is no additional behavioral context.

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

Conciseness5/5

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

The description is a single concise sentence with no fluff. It is front-loaded and easy to scan.

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?

Although an output schema exists, the description is too minimal. It fails to provide the job context, parameter semantics, or any usage instructions, leaving the agent without enough information to invoke the tool correctly beyond basic name guessing.

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 has zero description coverage and the description does not explain the parameters. The meaning of include_blocks is especially ambiguous, as the description mentions '识别块' (recognition blocks) but does not link it to the optional parameter.

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 action ('读取'/'reads') and the specific resource (the specified page) and what data it retrieves (recognized text, confidence, blocks, warnings). This distinguishes it from sibling tools like export_page_image_evidence, which deals with images. The verb and object are specific.

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 offers no guidance on when to use this tool versus alternatives or any context about prerequisites. It does not mention that it belongs to a job context or how it differs from inspection tools like inspect_pdf_text_layer.

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

get_processing_history查看处理历史B

汇总指定目录下的PDF处理历史、状态、页数和质量指标;默认隐藏本地完整路径。

ParametersJSON Schema
NameRequiredDescriptionDefault
rootYes
statusNo
source_pdfNo
max_recordsNo
include_sensitiveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior3/5

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

Annotations are absent, so the description carries full burden. It discloses that local full paths are hidden by default, which aligns with the include_sensitive parameter. It implies a read-only operation via '汇总' but does not explicitly state side-effect-freeness, permissions, or other behavioral traits. The added privacy note is useful but limited.

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 core function and includes a relevant behavioral caveat. Every word earns its place; there is no filler or repetition.

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?

With 5 parameters, no annotations, and no parameter descriptions, the description must be richer to be complete. An output schema exists, so return values are covered, but the tool lacks guidance on parameter usage and selection rationale. It is minimally viable but leaves gaps for an agent to infer correctly.

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%, so the description must compensate for parameter meanings. It implicitly covers root ('指定目录') and include_sensitive ('默认隐藏本地完整路径'), but leaves status, source_pdf, and max_records unexplained. While parameter names are semi-descriptive, the description adds only marginal value over the 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 uses the specific verb '汇总' (summarize) with a clear resource: PDF processing history under a specified directory, including status, page count, and quality metrics. It distinguishes itself from siblings like get_job_status and share_processing_history by focusing on directory-level historical summaries.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention exclusions, alternatives, or context like 'use for directory-level summaries' beyond the core statement. The description lacks any usage-directed language.

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

get_term_glossary查看专业术语词表A

返回当前可审计的书名限定词表,供智能体依据页面证据补充明确错字。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A4.5/5.0
Behavior4/5

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

Without any annotations, the description carries the full transparency burden. The verb '返回' clearly indicates a read-only retrieval operation, and it discloses that the glossary is '当前' (current) and '可审计' (auditable), providing state context. However, it does not explicitly state 'no side effects' or mention any access constraints, but the retrieval verb is sufficiently transparent for a getter.

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, front-loaded sentence that immediately states the tool's purpose and intended usage. It contains no filler or redundant content, earning the highest score.

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 that this is a zero-parameter getter with an output schema already present, the description sufficiently covers what the tool does and why it would be used. It explains the 'auditable' and 'book-title restricted' nature of the glossary and ties it to the typo-correction workflow. No gaps are apparent.

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, so the description does not need to explain parameter details. The baseline score of 4 applies, and the description adds no parameter-related information, which is appropriate.

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 the specific verb '返回' (returns) and identifies the resource as '当前可审计的书名限定词表' (current auditable book-title restricted glossary). This clearly distinguishes it from sibling 'update_term_glossary' (which modifies) and other retrieval tools.

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 explicitly states its intended use case: '供智能体依据页面证据补充明确错字' – for the agent to supplement typos based on page evidence. This provides clear context for when to fetch the glossary, though it does not explicitly mention alternative tools or exclusions.

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

inspect_pdf_text_layer检查PDF文本层C

判断PDF是否已经包含完整可用文本层,识别扫描、混合、损坏和密码保护PDF。

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
passwordNo
max_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It does not state whether the operation is read-only, whether it modifies the PDF, what happens with password-protected files, or any side effects. The verb 'inspect' implies read-only, but this is not explicitly disclosed. It also fails to mention potential errors or limitations.

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 conveys the core purpose without wasted words. It is front-loaded and appropriately sized for the tool's function, earning high marks for efficiency.

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

Completeness2/5

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

While the output schema exists and covers return values, the description is too sparse for a tool with three parameters and no parameter documentation. It does not explain how password and max_pages affect the inspection, what constitutes a 'complete usable text layer', or when to use the tool. This makes the tool incomplete for an agent to use correctly.

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 has no parameter descriptions (coverage 0%), and the description provides no explanation of the 'path', 'password', or 'max_pages' parameters. The description does not compensate for the lack of schema metadata, leaving the agent with no understanding of what each parameter means or how they affect behavior.

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

Purpose4/5

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

The description clearly states the tool's purpose: to determine whether a PDF contains a complete usable text layer and to identify scanned, mixed, damaged, and password-protected PDFs. It uses a specific verb ('inspect') and a clear resource (PDF text layer), and the scope is distinct enough from sibling tools, though it does not explicitly differentiate itself from siblings like 'diagnose_pdf'.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. It does not mention prerequisites, when this inspection is appropriate, or which sibling tools to use instead in other scenarios. This leaves the agent without context for selecting this tool over similar ones.

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

plan_ocr_capacity_profile规划 OCR 容量基准A

规划 1/2/3/4 线程单 worker 与多 worker 的隔离 OCR 吞吐基准。只创建配置和私有样本计划;发现任意生产 OCR 正在运行时会标记为延期,不会占用当前任务资源。

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNobook-fast
source_pdfYes
max_workersNo
sample_pagesNo
warmup_pagesNo
candidate_threadsNo

Output Schema

ParametersJSON 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 carries the full burden of behavioral disclosure. It explicitly states that the tool only creates configuration and private sample plans, and it will mark itself as deferred if production OCR is running, ensuring it doesn't consume current task resources. This discloses non-destructive side effects and deferral behavior, though it could elaborate on additional side effects or requirements.

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, well-structured sentence that front-loads the core action and scope, then adds two important safety behaviors. It is concise with no redundant information, earning a top score.

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

Completeness3/5

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

Given the tool has 6 parameters, no annotations, and no parameter descriptions, the description provides a reasonable high-level overview but lacks details on what the plan contains or how parameters affect the plan. However, an output schema exists, which likely covers return values, so the description is adequate but not complete. It is a baseline-viable description with clear gaps.

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 input schema has 0% description coverage, and the description does not explicitly name or explain any parameters. It indirectly hints at 'threads' and 'workers' (likely candidates for candidate_threads and max_workers), but this is vague and insufficient for a 6-parameter tool. The description adds minimal value over the schema, so a low score is warranted.

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 function: planning isolated OCR throughput benchmarks for 1/2/3/4 threads with single and multi-worker configurations. It uses a specific verb ('规划' / plan) and resource ('OCR 容量基准' / OCR capacity baseline), and distinguishes it from siblings like 'start_ocr_capacity_profile' by emphasizing this is the planning step that only creates configurations and sample plans.

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 provides clear context: it plans only, creates private sample plans, and defers if production OCR is running, indicating when it is safe to run. While it does not explicitly name alternatives or exclusions, the 'planning only' orientation and deferral condition effectively guide when to use this tool versus starting or activating a profile.

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

plan_pdf_job规划处理任务B

根据当前设备和PDF状态规划速度与品质平衡的处理路线;密码不会写入记录。

ParametersJSON Schema
NameRequiredDescriptionDefault
pathYes
passwordNo
max_secondsNo
target_qualityNobalanced

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description carries the full burden but only discloses that passwords will not be written to records. It does not state whether the tool is read-only, whether it modifies the PDF or job state, or what side effects may occur.

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, tightly structured sentence that front-loads the purpose and adds a concise security-related note. Every clause earns its place with no 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?

An output schema exists, so return values are covered, but the description lacks parameter semantics, usage context, and side-effect disclosure. For a tool with 4 parameters and no annotations, this is not sufficiently complete for correct selection and invocation.

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 mentions the password parameter (stating it won't be persisted). It does not explain path, max_seconds, or target_quality semantics, leaving most parameters underspecified.

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 function: planning a PDF processing route that balances speed and quality based on current device and PDF state. This is specific and distinguishes it from sibling planning tools like plan_ocr_capacity_profile or get_iteration_plan.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus alternatives. It does not mention prerequisites, exclusions, or when to prefer a sibling tool, leaving the agent without decision context.

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

rescue_pdfPDF一键救援A

首选入口:直接处理用户关于单个PDF的请求,不要让用户选择内部工具。传入PDF路径和用户原话,会自动诊断、规划,并按文档类型和预计耗时完成前台提取或启动可恢复后台任务;也可用同一入口查询进度、质检、恢复任务和查看页面证据。前台提取时每页实时推送进度(页数、百分比、剩余时间)。

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo识别质量。默认 book-balanced;除非用户要求速度、最高质量或取证级,不必询问。book-balanced
pathNo待处理的 PDF 路径或包含 PDF 的目录。目录会作为批量后台任务处理;查询已有任务时可不填。
job_dirNo已有救援任务目录。查询进度、质检、恢复或查看页面证据时使用。
requestNo用户的原始诉求,尽量原样传入。服务用它自动选择流程;不要先问用户选择操作。
passwordNo仅用于本次密码保护 PDF 调用;不会写入任务记录或后台命令。
workflowNo默认 auto,根据 request 自动判断。仅在调用方已明确知道生命周期步骤时指定。auto
executionNo提取执行方式。默认 auto:短任务前台完成,长 OCR 任务自动后台运行。auto
max_pagesNo仅处理前 N 页;用户要求试跑、样本或明确页数时填写。
output_dirNo结果目录;未提供时自动创建在 PDF 同级的 pdf_rescue_output 下。
page_numberNo查看页面证据时的 1 起始页码;也会尝试从 request 中提取“第 N 页”。
evidence_formatNo页面证据形式。默认 auto;用户提到图片、截图或渲染页时自动导出图片。auto

Output Schema

ParametersJSON 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?

No annotations are provided, so the description carries the full transparency burden. It discloses automatic diagnosis/planning, selection of foreground vs recoverable background execution based on document type and estimated time, and real-time per-page progress updates. It does not mention failure modes or side effects, but it goes well beyond a generic statement of purpose.

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 front-loaded with the most important directive (preferred entry point, don't force user to choose internal tools). It uses four sentences with no repetition of schema details, and every clause adds functional information. This is excellent for an 11-parameter orchestrator.

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 high complexity (11 parameters, multiple workflows, many sibling tools) and the existence of an output schema, the description covers the main invocation pattern, automatic workflow selection, foreground/background behavior, progress reporting, and the ability to query status/QC/resume/evidence through the same entry. It does not enumerate every workflow enum, but those are already described in the 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 coverage is 100%, and every parameter already has a descriptive schema entry, so the baseline is 3. The description adds minimal value by reinforcing that path and request are the primary inputs and job_dir is for existing tasks, which is already evident from the schema. It does not significantly deepen parameter understanding beyond the 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 explicitly names rescue_pdf as the preferred entry point ('首选入口') for single-PDF requests, with concrete actions: diagnose, plan, extract foreground/background, and query progress/QC/resume/evidence. It also differentiates from sibling tools by instructing the agent not to make the user select internal tools, making the orchestrator role unmistakable.

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 states when to use: for direct user requests about a single PDF, passing the path and raw request, and also for querying existing tasks via job_dir. It lacks explicit exclusions (e.g., batch/library scanning) and does not name alternative siblings, but the primary usage context is strong and actionable.

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

resume_job恢复任务A

检查任务是否疑似中断;确认中断后复用逐页缓存,从断点继续。恢复会启动独立 OCR 工作进程,立即返回,不阻塞 MCP。

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNo
forceNo
job_dirYes
passwordNo
stalled_after_secondsNo

Output Schema

ParametersJSON 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 burden of behavioral disclosure. It reveals key behaviors: starting an independent OCR worker process, returning immediately without blocking MCP, and reusing per-page cache. This is substantial context, though it does not cover edge cases or failure modes.

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 two concise, front-loaded sentences. The first covers the core mechanism, the second adds the non-blocking behavior, with no redundant or filler content.

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 adequately explains the core operation but omits parameter-level details and edge cases. Since an output schema exists, return values are handled, but the 5 parameters remain unexplained, leaving the overall context somewhat incomplete.

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 does not explain any of the 5 parameters (job_dir, mode, force, password, stalled_after_seconds). It only indirectly references the task, leaving the agent to guess the meanings and valid values of the parameters.

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: it checks for suspected interruption and resumes from a checkpoint by reusing per-page cache. It uses a specific verb-resource pair with a distinct scope, distinguishing it from siblings like get_job_status or cancel_job.

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 implies when to use the tool: when a task is suspected of being interrupted. It does not explicitly mention alternatives or exclusions, but the context is clear enough for an agent to infer appropriate usage.

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

run_health_check运行体检A

检查当前设备、内存、显卡和OCR相关依赖,给出推荐处理模式。快速模式不加载OCR模型,立即返回。

ParametersJSON Schema
NameRequiredDescriptionDefault
deep_probeNo是否深度探测(加载飞桨验证GPU,较慢)。默认false快速返回。

Output Schema

ParametersJSON 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 carries the transparency burden. It clearly describes the tool's read-only diagnostic nature, the difference between fast and deep modes (including that fast mode skips OCR model loading), and immediate return behavior. However, it does not mention potential side effects such as PaddlePaddle initialization or error conditions.

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

Conciseness5/5

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

Two concise sentences, front-loaded with the main purpose and followed by a key behavioral note. No redundant words or unnecessary details.

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 description sufficiently covers the tool's purpose and mode behavior, and since an output schema exists, return values need not be listed. It could have added explicit guidance on when to run each mode, but for a simple health check tool it is largely complete.

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% because the only parameter 'deep_probe' has a detailed description in the schema. The tool description adds nothing beyond that, so the baseline of 3 is appropriate.

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 ('检查' / check) and clearly identifies the target resources (设备、内存、显卡、OCR相关依赖), while also mentioning the output (推荐处理模式). This clearly distinguishes it from sibling PDF/OCR job 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?

The description implies this is a preflight health check, especially the fast mode for quick feedback, but does not explicitly state when to use versus alternatives like diagnose_pdf or plan_pdf_job. No exclusions or alternative tools are mentioned.

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

scan_pdf_library扫描书库B

递归扫描目录中的PDF书籍,抽样检查文本层,生成书库清单和建议输出目录。

ParametersJSON Schema
NameRequiredDescriptionDefault
rootYes
max_filesNo
output_dirNo
inspect_pagesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.4/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden of behavioral disclosure. It mentions 'sample check text layer' and 'generate inventory/suggested output', but does not explicitly state whether files are modified, whether output directories are created, or whether the scan is read-only. This leaves ambiguity about side effects. While 'scanning' implies non-destructive, the generation of output is underspecified.

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, efficient sentence that is front-loaded with the main action ('recursively scan'). Every phrase adds meaning, and there is no fluff or repetition. It is appropriately sized for the tool's complexity.

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 tool has 4 parameters, no annotations, and an output schema (which reduces the need to explain return values). However, the description lacks explicit usage guidance (when to use vs alternatives), fails to mention 'max_files', and leaves behavioral transparency gaps (e.g., file modification). While it covers core purpose and some parameters, it is not fully complete for an agent to reliably invoke it in all contexts.

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%, so the description must compensate. It partially covers 'root' (directory to scan), 'output_dir' (suggested output directory), and 'inspect_pages' (sampling pages), but 'max_files' is not mentioned at all. The description does not clearly define parameter specifics or relationships, leaving gaps for an AI agent to correctly set parameters.

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 ('scan') with a clear resource ('PDF books in directory'), and states specific actions: recursive scanning, sampling text layer, generating inventory and suggested output directory. This clearly distinguishes it from sibling tools like 'inspect_pdf_text_layer' or 'batch_extract_library'. The title in Chinese also aligns with the purpose.

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

Usage Guidelines3/5

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

The description implies the tool is for initial library scanning/inventory generation but does not explicitly state when to use it over alternatives. No exclusions or alternative tool recommendations are given. The context of 'recursively scanning a directory' is clear, but explicit usage guidance is missing.

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

share_processing_history分享处理记录C

生成可分享的处理历史JSON、Markdown和HTML文件,默认脱敏本地路径。

ParametersJSON Schema
NameRequiredDescriptionDefault
rootYes
output_dirNo
max_recordsNo
include_sensitiveNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It does reveal one key behavior: by default, local paths are redacted ("默认脱敏本地路径"). However, it does not disclose side effects like file writes to output_dir, whether it modifies or deletes anything, or the impact of include_sensitive. Thus it provides some but incomplete transparency.

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 a single concise sentence, front-loaded with the main action and outputs. It avoids redundancy and is easy to parse. However, it lacks any structural elements like bullet points or sections, which could improve clarity for a multi-format tool, but for its length it is efficient.

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?

Despite having 4 parameters and an output schema, the description is minimal. It does not explain the default output location when output_dir is null, the meaning of max_records, or how the generated files should be consumed. The tool's role versus get_processing_history is also unaddressed, making it incomplete for a file-generating tool.

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 description provides no explanation of the parameters root, output_dir, max_records, or include_sensitive. Schema description coverage is 0%, so the description must compensate but fails to do so. The only indirect reference is to 'default redaction,' which relates to include_sensitive's default false, but this is not explicit.

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

Purpose4/5

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

The description clearly states the tool's function: generating shareable processing history files in JSON, Markdown, and HTML formats ("生成可分享的处理历史JSON、Markdown和HTML文件"). It mentions the default redaction of local paths, which adds specificity. However, it does not explicitly contrast with sibling tools like get_processing_history, so it lacks distinct sibling 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?

The description gives no guidance on when to use this tool versus alternatives such as get_processing_history or other history-related tools. There is no mention of use cases, prerequisites, or exclusion criteria. The only implicit signal is the word 'shareable,' but that is not enough for effective tool selection.

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

start_ocr_capacity_profile启动 OCR 容量基准A

在机器没有任何生产 OCR 时后台运行已规划的容量基准。每个候选使用独立、不重叠的私有 PDF 页样本;调用立即返回,OCR 不会阻塞 MCP。

ParametersJSON Schema
NameRequiredDescriptionDefault
profile_idYes

Output Schema

ParametersJSON 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 carries the full burden of behavioral disclosure. It reveals key traits: it runs in the background, returns immediately, does not block MCP, and uses independent, non-overlapping private PDF page samples. This goes beyond the structured schema data.

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 concise and well-structured: two sentences, front-loaded with the main purpose, followed by relevant behavioral details. There is no redundancy or wasted content.

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 covers the essential context for a simple start operation: when to run it, background execution, and immediate return. However, it leaves ambiguity about where profile_id comes from and does not point to plan_ocr_capacity_profile as a prerequisite, which is a notable gap.

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 never mentions profile_id or explains how it relates to the planned benchmark. The parameter name is somewhat self-explanatory, but the description adds no semantic value for this required parameter.

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 a specific action: run a planned capacity benchmark in the background when there is no production OCR. It also distinguishes this tool from siblings like plan_ocr_capacity_profile and activate_ocr_capacity_profile by emphasizing 'planned' and the background/asynchronous nature.

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 provides an explicit precondition ('when the machine has no production OCR') and indicates that this is a background, non-blocking operation. It does not explicitly name alternative tools or when-not-to-use scenarios, but the context is sufficiently clear 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.

stop_batch停止批量任务A

停止批量提取(当前正在处理的书籍会继续完成,不再启动下一本)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON 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 offers valuable behavioral detail: the current book continues, only the next book is prevented. This goes beyond the basic 'stop' semantics and accurately discloses the tool's behavior.

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 sentence with no wasted words, front-loading the action and clarifying nuance in a parenthetical. Perfectly concise and well-structured.

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 parameterless tool with an output schema, the description fully explains the tool's behavior and side effects. It is complete for the tool's complexity and provides all necessary context.

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

Parameters4/5

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

The tool has zero parameters, so the description need not add parameter semantics. Baseline for 0 params is 4, and the description is appropriate without parameter details.

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 stops batch extraction and specifies that the currently processing book will complete while no new book will start. This provides a specific verb ('stop') and resource ('batch extraction') and clearly distinguishes it from sibling tools like cancel_job or resume_job.

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 implies when to use this tool (when you want a graceful stop after the current item) but does not explicitly mention alternatives or when not to use it. Context for usage is clear, but explicit exclusions or alternative comparisons are missing.

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

update_term_glossary更新专业术语词表A

依据已核对的页面证据,向书名限定词表加入一条明确错字替换;不支持不确定或跨行替换。

ParametersJSON Schema
NameRequiredDescriptionDefault
rightYes
wrongYes
rule_nameYes
title_keywordsYes

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.9/5.0
Behavior3/5

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

With no annotations, the description carries the transparency burden. It discloses the key constraints (no uncertain/cross-line replacements) and its title-scoped behavior, but does not mention whether existing rules are overwritten, permission requirements, or other mutation 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.

Conciseness5/5

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

The description is a single, well-structured sentence that is front-loaded with the action and includes necessary scope and constraints without filler. It is highly concise while remaining informative.

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 mutation tool with four required parameters and no annotations, the description is somewhat sparse: it does not provide usage alternatives or explain rule_name. The output schema covers return shape, but overall behavioral and parameter completeness remain partial.

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 0%, but the description adds meaning by indicating that wrong/right form a typo replacement pair and that title_keywords scope the rule via '书名限定词表'. However, rule_name is not semantically addressed, leaving a gap for one of the four required parameters.

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?

Description states a specific action: based on verified page evidence, add a clear typo replacement to a title-scoped glossary. It clearly distinguishes itself from sibling tools like get_term_glossary (read-only) and other extraction/diagnosis tools.

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 provides clear usage context: only use with verified page evidence, and explicitly excludes uncertain or cross-line replacements. It does not name alternative tools, but the when/when-not conditions are clearly stated.

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

TDQS

B3.3/5.0
Disambiguation2/5

Several tools have overlapping functions: rescue_pdf serves as a catch-all that duplicates diagnosis, planning, extraction, and monitoring; extract_book_text and extract_book_background are nearly identical; diagnose_pdf, inspect_pdf_text_layer, and plan_pdf_job all analyze PDFs with different angles. Agents will likely misselect among these.

Naming Consistency5/5

All 26 tools use a consistent snake_case verb_noun pattern (e.g., get_job_status, cancel_job, start_ocr_capacity_profile), which is highly predictable and easy to follow.

Tool Count2/5

26 tools is above the 25 threshold, and the count feels inflated by redundant tools like extract_book_text/extract_book_background and four separate OCR capacity profiling tools. The core purpose could be served with fewer, better-differentiated tools.

Completeness4/5

The tool set covers the full lifecycle of PDF diagnosis, extraction, monitoring, recovery, quality auditing, and history sharing, which is thorough. Minor gaps exist, such as no way to delete glossary entries or repair corrupted PDFs directly, but these are workaroundable.

Maintenance

ActivitySlowing
ResponsivenessSyncing

Resources

Unclaimed servers have limited discoverability.

Looking for Admin?

If you are the server author, to access and configure the admin panel.

Related MCP Connectors

Related MCP Servers

Latest Blog Posts

MCP directory API

We provide all the information about MCP servers via our MCP API.

curl -X GET 'https://glama.ai/api/mcp/v1/servers/albertm88/pdf-rescue-mcp'

If you have feedback or need assistance with the MCP directory API, please join our Discord server