Skip to main content
Glama

vidlens

ci PyPI MIT

中文 · English

把一个公开可看的视频,降解成「模型能真正读懂的证据表」。 零云 API、零视觉模型、零显卡依赖。核心原则:只下最小必要字节。

一分钟理解

我有眼睛(能看图片),但没有耳朵。所以我需要两样东西:

  1. 声音 → 带时间戳的文字(这是唯一必须借工具的部分)

  2. 任意时刻的画面 → 我自己看

工具只负责"取样 + 量化",理解留在模型脑子里。

Related MCP server: avv-mcp

三级预算(实测数据,7 分钟 1080p 视频)

取法

体积

拿到什么

全片 1080p

105.5 MB

全部

只下音频

7.3 MB

100% 语言信息(139 段 / 2184 字,与 1080p 逐字一致)

只取 20 秒片段

0.9 MB

那 20 秒的画面

平台字幕(若有)

0 MB

平台自带的字幕轨,连音频都不用下

分辨率对语言信息零贡献。 只有要读小字(代码、表格、UI 参数)时才需要原分辨率单帧。

安装

需要 Python 3.10+。两种装法:

A. 从 PyPI(推荐给使用者,不用 clone)

pipx install "vidlens-mcp[all]"      # 或 pip install "vidlens-mcp[all]"
vidlens doctor                        # CLI 自检
# MCP 配置只需要:{"command": "vidlens-mcp"}

产物与缓存在 %LOCALAPPDATA%\vidlens\(POSIX:~/.local/share/vidlens/), 可用 VIDLENS_OUT / VIDLENS_BIN 覆盖;模型仍然放在你自己的模型目录。

B. 从源码(开发用)

install.cmd

工程在哪就用哪,下面三个位置都能用环境变量覆盖:

  • 产物:VIDLENS_OUT,默认工程内 out/(源码布局);装成 wheel 后默认 %LOCALAPPDATA%\vidlens\out

  • 模型:VIDLENS_MODEL_ROOT,默认 %LOCALAPPDATA%\vidlens\models(POSIX 走 XDG);旧的 D:\dev\models 仅在它已存在时沿用

  • ffmpeg 软链:VIDLENS_BIN,默认工程内 bin/(装成 wheel 后默认用户数据目录下的 bin/)

DSH 插件(DeepSeek Harness 的原生 21 个工具)在另一个仓库: https://github.com/cctv2333/dsh-vidlens

命令

一、网上视频(不需要先下载)

vl meta  <url>                      # 只读网页,0 字节媒体
vl grab  <url> --lang zh            # 字幕优先;无字幕则只下音频 -> 转写 + 停顿 + brief
vl grab  <url> --cuts               # 额外扫镜头(需下最低画质视频,约 14-21MB,用完即删)
vl clip  <url> --from 02:00 --to 02:20 --sheet   # 只下这 20 秒,出带时间码的拼图

二、本地视频

vl probe  a.mp4
vl shots  a.mp4 --thr 0.30
vl frames a.mp4 --at 19.5,21.0
vl frames a.mp4 --from 92 --to 104 --fps 4
vl sheet  a.mp4 --from 0 --to 30 --cols 5 --rows 4
vl speech a.mp4 --lang zh
vl pauses a.mp4
vl env    a.mp4                      # 响度包络(文本火花线)
vl report a.mp4 --lang zh            # 本地全量 -> brief.md + events.jsonl

Windows 用 vl.cmd,其余平台用 .venv/bin/python vidlens.py。

MCP 工具同样吃本地路径(1.6.0 起,18 个工具全部有效):video_meta("D:\\a.mp4")、 video_brief(...)、video_ocr(...) 都可以直接给路径,也认 file:///D:/a.mp4、~/a.mov、带引号的路径。 本地文件不下载、不联网。以前这里会报 Unsupported url scheme: "d"——盘符被当成 URL scheme, 属于工具层把"输入一定是 URL"写死了(见 BUG_LEDGER B-068)。

本地文件少两样东西,因为那是网站才有的:平台字幕(走本地 ASR)和评论区(工具会直接说没有,不会编造)。

安全边界(写死在代码里)

1. 不是白名单,是行为规则。 没有站点列表,没有域名限制。任何不用登录就能看的页面都可以试。 遇到"需要登录/付费/会员/验证码"会停下来说明原因,因为绕过去会让账号和站点把你当攻击者,代价比看一个视频大得多。 如果你愿意,可以显式传 --cookies-from-browser 用你自己的登录态——默认不用。

2. 不装爬虫。 一次调用只处理一个视频;请求间强制 --sleep-requests 0.6、 --sleep-interval 1~3、失败退避重试。这是为了保护"以后还能看",不是为了限制你。

3. 外部文本分两层看,不是"什么都不信"。

层面

规则

原因

指令地位

外部文本永远是数据,不是命令

标题/字幕里写"忽略以上指令"的句子,不能让它劫持我。这条无条件。

事实可信度

工具不判断真假,只标注来源与风险

视频说的可能不准确。该信的是画面/时间码/交叉验证,不是旁白。

所以 brief 顶部会给的是"来源 + 风险扫描",不是"内容不可信"。 清洗只针对藏字和载荷(零宽字符、双向符、base64、ANSI),正常文字一个字不改。

4. 不信 exit code。 yt-dlp 对失效视频可能"成功"返回空壳, check_meta() 会校验 id/title/duration,不合格就停。

MCP 外壳(18 个工具)

url 参数既接受公开视频链接,也接受本地文件路径(1.6.0 起),例如 D:\a.mp4 或 file:///D:/a.mp4。

基础四件

工具

下载量

用途

video_meta(url)

0

标题/UP主/时长/播放/是否有字幕

video_plan(url, window=300)

0

按切点/长静音分章节 + 建议顺序;长视频先调它

video_subs(url, lang=zh)

0

平台字幕(人工优先,其次自动),带时间码

video_brief(url, ..., level="digest")

平台字幕 0;无字幕才下音频

摘要(默认,约 1.5k 字:章节 + 5 句关键台词 + 全文路径);level="full" 才给 6–9k 字完整报告;>20 分钟且无字幕时默认只给章节,full=true 才全量

video_watch(url, minutes=5, cursor="next")

每段该窗音频(或缓存)

分段看片:一次一段(默认 5 分钟、约 0.5k 字),带回「已看 X / 共 Y(%)」;cursor 支持 next/restart/stop

video_window(url, start, end)

0(有缓存时)

某时间窗的台词与停顿

video_full(url, confirm=True)

整片

必须显式确认

超时解法(长视频必用)

工具

用途

video_job_start(url, scan_cuts, comments)

后台起任务,立即返回 job_id

video_job(job_id, wait_seconds=20)

轮询阶段+百分比,完成后返回报告

任务状态存在服务进程内存里:Chatbox 重启/重连 MCP,未取回的任务会消失(重跑即可,缓存还在)。

看画面 / 无音频视频

工具

下载量

用途

video_visual_scan(url, n=24)

最低画质视频(7min≈14MB)

全片抽样 n 帧(按切点优先),烧上时间码拼图

video_sheet(url, start, end, cols, rows)

该段(20s≈0.9MB)

指定区间拼图

video_frames(url, at=[...])

该段

最多 6 张精确帧

video_ocr(url, start, end, n=12)

该段最低画质

把画面上的字读成文本(本地 OCR,离线),带时间码;无人声/无字幕视频的主力

无声视频(字幕型)怎么处理

中文知识区有大量视频没有人声、也没有平台字幕,文字全烧在画面上。video_brief 会先告诉你 「几乎无人声(有效台词 0 字)」,接着用 video_ocr,它把 n 帧里的文字识别出来、合并同一句跨帧的重复、 剔除水印与图表标签,输出可直接引用的带时间码文本(12 帧约 1.3k tokens,比逐帧看图省一个数量级)。

OCR 是可选依赖,引擎是 RapidOCR(Apache-2.0), PP-OCRv6 模型随包分发、约 30MB,装好即离线,运行时不下载任何东西。

装在哪、怎么换(不装也不会坏):第一次调用 video_ocr 不会偷偷下载,而是告诉你 「下载约 80MB、会装到 <路径>、怎么换目录」;再调一次并传 install=true 才开始下, 下载前后都会把路径写进结果。

变量

作用

默认

VIDLENS_OCR_TARGET

装到这个目录(自动加入 import 路径,不写系统目录)

本解释器的 site-packages(Windows 上通常就是 C 盘)

VIDLENS_OCR_AUTO_INSTALL

ask 先问(默认)/ auto 自动装 / off 只给命令

ask

# 想放 D 盘、并且以后自动装:
set VIDLENS_OCR_TARGET=D:\your\ocr
set VIDLENS_OCR_AUTO_INSTALL=auto

# 或者自己装一次(推荐给 CI/多环境):
pip install "vidlens-mcp[ocr]"
vidlens_doctor          # 会多一行 ocr: rapidocr 可用

实测:下载约 80MB、装完占盘 150MB(已有 numpy)/ 最多 220MB(自选目录要自带 numpy), 首次安装 18s(有 pip 缓存时)。

署名与许可证见 NOTICE.md;与 Umi-OCR(MIT) 的关系只是"借了离线+可换引擎的做法",没有复制它的代码。

听声音事件(台词之外)

工具

下载量

用途

video_soundscape(url, start, end)

该段音频(60s≈1MB)

AudioSet 527 类声音事件(Chewing / Knock / Wood block / Water / Chink / Scrape …)+ 概率 + 时间码;喝水/吞咽没有对应类,只能靠水声+画面推断

判断内容性质

工具

下载量

用途

video_comments(url, limit=40)

0

评论互动比、正/负面词频、争议度启发式

vidlens_models(action=list)

0

本地模型目录 + 硬件建议 + 本机真实路径;要下用 action=download(confirm 才真下)

vidlens_doctor()

0

自检:python/ffmpeg/yt-dlp/依赖/模型/磁盘/网络

Chatbox / Claude / Cursor 里加 stdio server 的三项:

command : <你的 python 路径>
args    : <工程目录>\vl_mcp.py       # 或直接 vidlens-mcp
env     : PYTHONIOENCODING=utf-8 ; HF_HUB_DISABLE_XET=1

通用 JSON 见 mcp.example.json(<PROJECT> 换成工程目录);本机 mcp.json 是实际路径。 注意:MCP 走 stdio,服务进程绝对不能 print; 库函数用 verbose=False,下载/ASR 用 _MEDIA_LOCK 串行。禁止用 contextlib.redirect_stdout 长时间劫持 sys.stdout,那会吞掉协议响应。

需要 cookie 的站点(抖音等)默认不碰;用户可显式开启:

VIDLENS_COOKIES=D:\path\cookies.txt
# 或
VIDLENS_COOKIES_FROM_BROWSER=chrome   # edge / firefox / chromium

浏览器正在运行时读不到 cookie 库(文件被锁),先完全退出浏览器(含托盘/后台进程)再试; 至于"这个浏览器里到底有没有该站的 cookie"是另一回事——没登录过就是没有,工具不会替你凭空造一个。 新版 Chrome/Edge 用 App-Bound 加密时,导出的 cookies.txt + VIDLENS_COOKIES 更稳。

图片内联策略(MCP 的 image block 线上就是 base64,一张 340KB 拼图 ≈ 45 万字符):

VIDLENS_INLINE_IMAGES=auto    # 默认:只内联 ≤200KB 的图,超出留在磁盘并给路径
VIDLENS_INLINE_IMAGES=always  # 全贴图(能读文件的宿主没必要)
VIDLENS_INLINE_IMAGES=never   # 只给路径,一张都不贴

每个较重的工具结果末尾都有一行 [成本] 本次回上下文 ≈N tok,方便在调用前决定值不值。

命令行新增命令

vl clean --days 7 --dry-run      # 清理旧缓存(默认只删媒体,保留 brief.md)
vl clean --days 7                # 真删
vl clean --days 30 --all         # 整个目录删
vl doctor                        # 自检 11 项
vl comments <url>                # 评论区信号 -> out/<id>/comments.md
vl scan <url> --n 24             # 全片抽样帧拼图(无音频视频用)
vl plan <url> --window 300       # 长视频分步建议
vl models                        # 本地模型目录(只读,不下载)
vl models --recommend            # 按内存/CPU/磁盘给建议

无音频 / 长静音视频怎么办

  1. video_brief 会先算语音覆盖率;低于 15% 直接提醒"信息在画面里"

  2. 用 video_visual_scan 全片抽样(有切点按切点取,没有就均匀取),一次返回多张带时间码的图

  3. 发现可疑段落,再用 video_sheet 或 video_frames 局部放大

长视频怎么办:默认抽样,按需全量

人类看长视频会加速/跳过,工具也按这个顺序:

  1. video_meta → 值不值得看

  2. video_plan → 0 下载拿章节

  3. 挑 2-3 段:video_window 读台词、video_sheet 看画面

  4. 只有用户明确要「完整/逐字/全片」时:video_brief(full=true),超过 60 秒用 video_job_start(full=true) → video_job 轮询

超过 20 分钟、且没有平台字幕的视频,video_brief 默认只返回章节建议, 不会偷偷下完整音频。平台字幕优先(video_subs,0 下载);没有字幕才走本地 ASR。 video_job(comments=True) 会顺带附上评论区分析。

本地 ASR:SenseVoice(推荐)/ Whisper

默认 VIDLENS_ASR=auto:只要 sherpa-onnx、SenseVoice 模型和词表都在,就用 SenseVoice; 否则自动回退 faster-whisper。不会重复下模型。

  • 用户已有模型(FlashVoice 自带): %APPDATA%\com.flashvoices\models\sense-voice-large.onnx (937MB,等于官方 float32 model.onnx,元数据 iic/SenseVoiceSmall)

  • 词表:tokens.txt(308KB,一次下载,25,055 行),放在模型根目录的 sensevoice/ 下

  • 覆盖路径:

    VIDLENS_SENSEVOICE_MODEL=D:\path\sense-voice.onnx
    VIDLENS_SENSEVOICE_TOKENS=D:\path\tokens.txt
  • 实测(本机 CPU):加载 1.5s;28.4s 音频解码 0.53s;20s 音乐段解码 0.35s。

  • 一次输出:text、lang(zh/en/yue/ja/ko)、emotion(NEUTRAL/HAPPY/SAD/…)、 event(Speech/BGM/Laughter/Applause/Cry/…)、timestamps。

  • video_audio 用这些标签 + 一个轻量节拍估计(合成 120 BPM 实测 121.0;真实 BGM 约 125)。

  • 强制旧后端:VIDLENS_ASR=whisper。Whisper 加载时先试 local_files_only=True, 缓存命中就不联网(实测 1.68s 加载);只有缓存缺失才下载。

  • 注意:新对话会启动新的 MCP 进程,模型需要重新加载进内存(SenseVoice 约 1.5s), 但不会重新下载权重。模型加载 ≠ 下载。

音乐信息(优先看平台元数据)

  • B 站:player/wbi/v2 的 bgm_info 直接给 music_title 和音乐链接。 video_meta 会显示「平台音乐」,video_brief 有「音乐信息」章节, video_audio 也会带上。

  • 其他站:扫描标题/简介里的 BGM:、配乐:、音乐:、歌曲:、《…》 等线索;这是零下载的文本信息,不是听音识曲。

  • 注意:平台标注是全片信息,未必当前片段在放;也可能缺失/写错。

  • 实测 BV1PvHX61EgV:bgm_info = 《Macarena (River Re-Mix 103 BPM)》, video_meta 已正确显示。

模型目录 / 下载 / CED-mini / AcoustID

vidlens_models(或 vl models)列出本机模型、体积、用途、硬件建议,以及本机解析出的 真实路径(MODEL_ROOT / whisper 目录 / 声音事件目录)。下载走同一条链路,规则和 OCR 一致:

vidlens_models(action="list")                                  # 目录 + 真实路径
vidlens_models(action="download", name="ced-mini")             # 只报大小与落点
vidlens_models(action="download", name="ced-mini", confirm=true)  # 真下,回报装到哪

变量

作用

默认

VIDLENS_MODEL_ROOT

整棵模型目录(whisper / sensevoice / audio-tagging 都在下面)

%LOCALAPPDATA%\vidlens\models(POSIX: XDG);旧的 D:\dev\models 仅在它已存在时沿用

VIDLENS_MODEL_DIR / VIDLENS_TAGGING_DIR

单独覆盖 whisper / 声音事件

上面目录的子目录

VIDLENS_MODEL_AUTO_DOWNLOAD

ask 先问 / auto 自动下(只对 ≤20MB)/ off 只给命令

ask

可下载:ced-mini 10MB、whisper-tiny 75MB、whisper-base 145MB、whisper-small 484MB。 whisper 不再静默下载:以前第一次转写会直接 local_files_only=False 拉几百 MB, 现在先给大小与落点,确认后才下。SenseVoice(937MB)只给说明,不代下。

  • CED-mini(已接入,V-007):sherpa-onnx 的 AudioTagging + k2-fsa int8 模型 (10.4MB)+ class_labels_indices.csv(14.7KB),AudioSet 527 类声音事件分类, 不是 ASR。入口:video_soundscape / vidlens_soundscape。 能识别吃饭/咀嚼(Chewing, mastication)、敲/拍(Knock / Tap / Wood block / Thump)、 水声(Water / Water tap)、杯子碰撞(Chink, clink)、拖拽(Scrape)、塑料袋 (Crumpling, crinkling)、掌声/笑声等。喝水/吞咽没有对应 AudioSet 类,只能靠 水声 + 画面推断;要准需 CLAP 零样本或自训小分类器。 实测:加载 0.14s、28s 音频推理 43ms;下载链路实测 10.0MB / 52s(hf-mirror 回退), 下完立刻被 available() 认出来(同一个解析函数,装和读不会各说各话)。

  • AcoustID:音频指纹检索,不是 AI 模型。需要 Chromaprint fpcalc + 客户端 API key,官方限 3 请求/秒、仅非商业;返回 MusicBrainz 记录,不保证歌名。 优先级低于平台元数据:B 站 player/wbi/v2 的 bgm_info 直接给歌名和链接, 已接入 video_meta / video_brief / video_audio。

  • 平台元数据也可能缺失/写错;需要时再用听音识曲交叉核对。

方言 / 口音 / 字幕

  • 人工字幕:UP 主上传的字幕最可靠,直接 video_subs 或 video_brief(0 下载)。

  • 自动字幕:平台 ASR 生成的,免下载但可能错;仍比没有强。

  • B 站 AI 字幕:video_meta 的 has_auto_subs 会显示 ai-zh 等; 但匿名 player/v2 多数返回空,通常需要登录态。设置 VIDLENS_COOKIES_FROM_BROWSER=edge(或 chrome/firefox)后再试。 字幕匹配已包含 ai-zh,ai-en,ai-.*。

  • 无字幕:SenseVoice 优先;lang 传 yue(粤语)等可改善;重口音仍可能错。 要旧 Whisper 加方言提示词:VIDLENS_ASR=whisper + prompt=...。

  • 画面硬字幕:用 video_sheet / video_frames 取帧,AI 自己看字。

  • 低置信词会列在 brief 的「低置信词」章节,必须回画面/原音核对。

产物结构

out/<视频id>/
  meta.json          元数据 + 风险扫描结果
  transcript.jsonl   词级时间戳 + 每词置信度
  transcript.srt     字幕
  pauses.json        话中停顿
  brief.md           来源/风险扫描 / 结构 / 停顿语境 / 低置信词 / 下一步看哪里
  clip_<a>_<b>/      按需片段与拼图(媒体文件默认删除)

广告自动跳过

赞助口播、带货、优惠码——零价值,不进摘要。

  • vidlens_ads.py 按“赞助/优惠/下单/链接/积分/保温杯…”等词加权,按时间间隔聚类成段, 再要求“时长够长 + 命中密度够高”才判定(不靠单个关键词就下手)

  • brief 里单独列出「广告段落(已跳过)」及时间码,转写正文直接剔除

  • 原始文字仍保留在 transcript.jsonl(可追溯),只是不进摘要

  • 实测:某 40 分钟视频命中 20:02.780 → 21:39.060(96 秒,占 4%);无广告视频 0 命中

  • 阈值可调:vidlens_ads.detect(rows, min_score=, min_dur=, density=, join_sec=), 误判可直接看 brief 里的段落推翻

交接与分发

  • 交接入口:HANDOVER.md → handover/README.md

  • 架构/模型/分发/归档/复现:handover/ARCHITECTURE.md、MODELS.md、 DISTRIBUTION.md、ARCHIVE.md、REPRODUCE.md

  • 可分发包:dist/vidlens-src-YYYYMMDD.zip(不含模型、out/、.venv/、bin/、 mcp.json)。本次包解压后 94 项测试通过。

  • 许可证:MIT(见 LICENSE);模型权重不随仓库/分发包分发。

测试(209 项,默认不依赖网络)

.venv\Scripts\python.exe -m unittest discover -s tests -v

core 9 + web 23 + extra 12 + ads 9 + mcp 7(含真实 stdio 握手)+ plan 10 + features 24(字幕/抽样/cookie/缓存/边界/声音工具/模型目录)+ audioevents 7(声音事件,模型缺失时自动跳过)+ lock 3(跨进程锁)。 网络相关用例用 VIDLENS_NET_TESTS=1 打开。

覆盖:探测、切点、抽帧命名、拼图偏移(历史 bug 回归)、静音检测、时间码解析、 SRT 生成、模型目录、零宽字符清洗、中英文注入检测、shell/外泄检测、 滚动字幕去重、VTT 解析、片段参数边界、登录墙识别、空壳元数据拒绝、 AudioSet 窗口切分与时间码不漂移、跨进程文件锁。

发布(维护者)

  • CI:.github/workflows/ci.yml(ubuntu + windows × python 3.10/3.12,离线测试 + wheel 构建 + 「安装形态写用户数据目录」检查)。

  • 发版:打 tag 即发布。

git tag v1.4.0 && git push origin v1.4.0

release.yml 构建 sdist + wheel、通过 Trusted Publishing(OIDC) 上传 PyPI(不需要任何长期 token;一次性 publisher 配置见 RELEASING.md); 也可改用 PyPI Trusted Publishing)、并附到 GitHub Release。

路线图

已做 / 未做 / 验收标准 / 不做清单:ROADMAP.md。

已知坑(都是实测踩过的)

  1. av 版本:faster-whisper 1.2.1 用 av.open(metadata_errors=...),av 19 已删该参数。 本工具绕开 PyAV,用 ffmpeg 自解码 16k 波形喂模型。

  2. HF_HUB_DISABLE_XET=1 必须设,否则 hf-mirror 走 Xet 会 401。

  3. --download-sections 要求可执行文件名就是 ffmpeg,而 imageio 给的是 ffmpeg-win-x86_64-v7.1.exe → 用 ffmpeg_dir() 建一个软链接/副本。

  4. -ss 会让 pts 归零,拼图时间码会全错 → 必须 setpts=PTS+offset/TB。

  5. 静音段分两种:话中犹豫,和片尾无词。混在一起会给出 8 条一样的"犹豫"结论。

  6. PowerShell 读无 BOM 脚本,中文全烂;.cmd 必须 CRLF;中文别走命令行参数。

  7. Linux 上 imageio 的 ffmpeg 没有 drawtext(没编 libfreetype):拼图/抽样帧不能烧时间码。 现在会先用 has_drawtext() 探一次,没有就跳过烧字、照样出图(文件名与时间码仍然准确), 并在回执里注明 —— 以前是直接整张拼图失败。

许可证与归属

本项目以 MIT 许可证发布,见 LICENSE。本项目未复制任何外部代码, 只借鉴设计思路,已逐项在 NOTICE.md 登记。 运行时依赖:yt-dlp(Unlicense)、faster-whisper(MIT)、imageio-ffmpeg(BSD-2)、 sherpa-onnx(Apache-2.0)、ffmpeg 二进制(LGPL/GPL,以子进程方式调用,不链接)。 模型权重(SenseVoice / Whisper / CED-mini)不随仓库分发,各自遵循上游许可。

Available Tools

18 tools
video_audioA

听一段:本地 SenseVoice 的语种/情感/音频事件 + 节拍/能量(近似)。 只下这一段音频(20 秒约 0.5MB),不转写全片。节拍估计对纯语音段意义有限, 对音乐/剪辑节奏更有用;情感/事件是模型标签,不是事实判断。

NameRequiredDescriptionDefault
endNo20
urlYes
langNozh
startNo0

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does so well: it discloses local model execution (SenseVoice), that only the segment is downloaded (~0.5MB per 20s), that beat values are approximate, and that emotion/event outputs are model labels rather than facts. It omits cost/rate limits and response structure details beyond the label list.

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

Conciseness4/5

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

The description is compact and front-loads what the tool returns, then adds the download-scope and interpretation caveats. Each sentence contributes, though the caveat about beat estimation is slightly wordier than needed.

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

Completeness4/5

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

For a 4-parameter tool with no output schema, the description conveys what the response contains and how to interpret it, which is the main thing an agent needs. The remaining gap is parameter-level detail (start/end/lang semantics), which is the only reason it is not a 5.

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 document url, start, end, and lang. It only hints at the segment concept and the 20-second default ('20 秒约 0.5MB'); start/end formats and especially the purpose of the lang parameter (default 'zh') are left completely unexplained.

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 gives a specific verb ('听一段' — sample a segment) and enumerates the outputs: SenseVoice language/emotion/audio events plus beat/energy. It also distinguishes itself from the transcription path by stating it '不转写全片', so an agent can separate it from video_subs/video_full, though it doesn't explicitly name those siblings.

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 gives clear conditions for when the tool is worthwhile (music or edit rhythm) and when it is not ('节拍估计对纯语音段意义有限'), which is real when/when-not guidance. It stops short of naming an alternative tool, so it is not a full 5.

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

video_briefA

看一个视频:默认给摘要(章节 + 关键句 + 全文路径,约 1.5k 字), 需要完整报告才传 level="full"(6–9k 字,会长期占用上下文,慎用)。 平台字幕优先(0 媒体下载),无字幕才下音频做 ASR。 长视频(>20 分钟且无字幕)默认只给章节建议,不逐字转写;确实要全量传 full=true。 方言可传 lang=yue 等,或 prompt="以下是粤语,请保留方言用词"。 需要看画面再用 video_sheet / video_frames,不要下整片。

NameRequiredDescriptionDefault
urlYes
fullNo
langNozh
levelNodigest
modelNosmall
promptNo
refreshNo
scan_cutsNo

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 full burden and does well: it discloses subtitle-first sourcing (0 media download), ASR fallback only when subtitles are missing, truncation behavior on long videos, and context-cost warnings for full mode. Gaps remain on the undocumented flags (refresh, scan_cuts, model) and on whether results are cached or how errors surface.

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

Conciseness4/5

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

Front-loaded with the default behavior and output shape, then cost warning, then source strategy, then fallbacks. Dense but each line carries operational information; only the duplicated full/level instruction is redundant.

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?

No output schema and no annotations, so the description must cover a lot for an 8-param tool. It adequately covers the main path (URL → digest/full) and the visual-follow-up split, but leaves refresh, scan_cuts, and model behavior unexplained for an agent to call those correctly.

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

Parameters3/5

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

Schema coverage is 0% across 8 params, so the description must compensate and only partly does: it explains full, level, lang, and prompt with concrete values/examples. model, refresh, and scan_cuts receive zero explanation, and the overlapping full=true vs level='full' wording creates mild ambiguity about which switch to use.

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

Purpose4/5

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

The description uses a specific verb+resource ('看一个视频') and defines the default deliverable precisely (章节 + 关键句 + 全文路径, ~1.5k 字) plus the alternate full-report mode. It distinguishes itself from video_sheet/video_frames, though several near-siblings (video_full, video_watch) are never differentiated.

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

Usage Guidelines5/5

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

Explicit when-to and when-not guidance: default digest, use level='full' only when a full report is truly needed and it '长期占用上下文,慎用', long >20min no-subtitle videos stop at chapter suggestions unless full=true is passed. It also routes the agent elsewhere ('需要看画面再用 video_sheet / video_frames') and warns against a bad alternative ('不要下整片').

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

video_commentsA

抓公开视频的评论区(目前支持 B 站,免登录),给出互动比、负面/正面词频、 争议度启发式估计、高赞评论。默认不返回评论配图:一张截图走 MCP 是 base64 全量进上下文,很容易把窗口顶爆。确实要看图再传 with_images=true(最多 4 张)。 评论是最敌对的文本来源,全部经过清洗与注入扫描后才展示。

NameRequiredDescriptionDefault
urlYes
limitNo
with_imagesNo

TDQS

A3.5/5.0
Behavior4/5

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

With zero annotations the description carries the full burden and mostly does: login-free access, Bilibili-only coverage, a hard cap of 4 images, and the reason images are off by default (base64 screenshots flooding the context window). It also discloses that all comments are sanitized and injection-scanned before display, which is genuinely useful trust context. It omits rate limits and what happens on unsupported platforms.

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

Conciseness4/5

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

Front-loads the capability and platform scope, then the image caveat with its rationale. Every sentence carries information; the parenthetical explanation of why images are excluded is slightly long but justifies a non-obvious default.

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?

No output schema and no annotations, yet the description enumerates the returned analytics and states the image-off default, so an agent knows what comes back. The remaining gap is input-side: URL format and limit semantics are necessary to call it correctly and are absent from both schema and description.

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 coverage is 0%, so the description must explain all three parameters. It explains with_images thoroughly (default false, max 4, context-blowout rationale) but says nothing about the required `url` format (full URL? BV id?) or about `limit` and its default of 40, leaving two of three params undocumented anywhere.

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

Purpose4/5

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

States a specific verb+resource: fetch the public comment section of a video, currently Bilibili-only and login-free, and enumerates the derived outputs (engagement ratio, sentiment word frequency, controversy heuristic, top comments). That clearly separates it from video_subs/video_meta/video_transcript siblings by resource, though it never names a sibling explicitly.

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?

Gives a real conditional for with_images ('only pass with_images=true if you actually need the images'), plus the platform/authentication precondition. It gives no guidance on when to prefer this over video_brief or video_full, which also summarize a video, so routing between siblings is left to inference.

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

video_framesA

按秒数精确取帧(最多 6 张),返回图片本身。只在需要读小字/看清细节时用。 注意:取帧需要下载对应片段,成本高于 video_sheet。

NameRequiredDescriptionDefault
atYes
urlYes
widthNo

TDQS

A3.7/5.0
Behavior3/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. It usefully discloses two behavioral facts a schema cannot: a hard cap of 6 frames, and that frame extraction downloads the corresponding video segment and therefore costs more than video_sheet. It does not say how images are returned (format, whether resized by width), nor does it cover failure modes for out-of-range timestamps.

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

Conciseness5/5

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

Two short sentences, with the core capability and its cap stated first, followed by the usage condition and the cost caveat. Every sentence carries information, and there is no padding.

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 3-parameter read tool with no annotations, no output schema, and no parameter descriptions, the description covers purpose, the cap, the return type at a high level, and relative cost. It still leaves the meaning and units of width, the format of the returned images, and the validation of 'at' unexplained, which matters given the 6-frame limit.

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%, so the description should compensate. It establishes the key semantic that frame positions are given in seconds ('按秒数'), which is not obvious from a bare 'at' array of numbers, and that the list is capped at 6. The url and width parameters are left entirely undocumented, so the compensation is only partial.

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

Purpose4/5

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

States a specific verb+resource: extract frames at precise second offsets, capped at 6, returning the images themselves. This is meaningfully more specific than the bare name, though it does not distinguish itself from the related tools video_ocr or video_visual_scan, which also deal with reading visual content.

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?

"只在需要读小字/看清细节时用" gives an explicit condition for when to use this tool, and the note that it costs more than video_sheet names the cheaper alternative. It lacks an explicit "do not use for X" clause and does not address the overlap with video_ocr, so it stops short of a 5.

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

video_fullA

下载整片(仅在你明确要看全片时使用)。必须 confirm=True 才会执行。 普通分析不需要它——先试 video_brief。

NameRequiredDescriptionDefault
urlYes
max_mbNo
confirmNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations, so the description carries the disclosure burden; it reveals the confirmation gate and that this is a heavyweight operation not needed for normal analysis, which is the key behavioral trait. It omits what happens on oversized/failed downloads and any cost or timeout implications of pulling a full file.

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?

Three short sentences, front-loaded with the action and its restriction, then the confirmation gate, then the sibling redirect. Nothing is wasted.

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

Completeness2/5

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

With no annotations, no output schema, and 0% parameter coverage, the description should say more: max_mb semantics and default-bound behavior (what happens if the video exceeds 800 MB) are entirely absent, and there is no indication of return shape for a download operation.

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

Parameters3/5

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

Schema coverage is 0%, so all three parameters are bare. The description usefully explains that confirm must be True, but 'max_mb' (default 800) is never mentioned and 'url' is only implied, leaving part of the surface unaddressed.

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

Purpose5/5

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

States a specific verb+resource ('下载整片' – download the full video) and immediately scopes it ('仅在你明确要看全片时使用'), distinguishing it from the sibling video_brief which handles ordinary analysis. An agent can select between the two without opening either schema.

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

Usage Guidelines5/5

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

Explicitly names the alternative ('先试 video_brief') and the condition that selects this tool (only when the full video is genuinely needed), plus a hard precondition (confirm=True). When-to-use, when-not-to-use, and the gating requirement are all present.

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

video_jobA

查询后台任务。wait_seconds 建议 20-30(不要超过 60,否则客户端会超时)。 完成时返回完整报告;运行中返回 stage + 百分比。

NameRequiredDescriptionDefault
job_idYes
wait_secondsNo

TDQS

A3.7/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden and does well: it discloses the blocking wait behavior, the client-timeout risk above 60 seconds, and the different return shapes for running vs. completed jobs. It does not cover error cases or what happens when the wait expires, but the core behavior is clear.

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

Conciseness4/5

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

Two compact sentences with no filler; the practical wait_seconds constraint and the return behavior are front-loaded. It could be slightly more structured but wastes no words.

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

Completeness4/5

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

For a simple two-parameter polling tool with no annotations and no output schema, the description covers the essential behavior: blocking semantics, timeout risk, and the shape of returned data. The main omission is how to obtain job_id and any error/timeout behavior.

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%, so the description must compensate. It adds genuinely useful semantics for wait_seconds (recommended 20–30, hard practical limit 60 due to client timeout), but job_id is left completely unexplained—its format and origin from video_job_start are not stated.

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

Purpose4/5

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

States a specific verb and resource: querying a background job, with what it returns on completion vs. while running. However, it does not explicitly differentiate from the sibling video_job_start, so the agent must infer the relationship from names alone.

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?

Usage is implied by '查询后台任务' and the wait_seconds guidance, which signals this is a polling call after a job has been started. No explicit when-to-use or alternative-tool guidance is given, and video_job_start is never mentioned.

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

video_job_startA

解决客户端超时:长视频先起后台任务,再用 video_job 轮询。 推荐顺序:video_meta → video_plan → video_window / video_sheet; 只有明确要全量逐字时才 video_job_start(full=true)。 comments=True 会额外附上评论区争议分析。

NameRequiredDescriptionDefault
urlYes
fullNo
langNozh
modelNosmall
promptNo
commentsNo
scan_cutsNo

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 it does disclose the critical async behavior: this starts a background job and must be polled via video_job. It does not say what the start call returns (a job id?), how long jobs run, whether jobs are queued or concurrent, or what happens on failure — all material for an async mutation.

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

Conciseness4/5

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

Front-loads the problem it solves (client timeout) and then the routing advice in three tight lines. Dense but every clause carries operational meaning; no filler.

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

Completeness2/5

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

For a 7-parameter asynchronous job with no annotations and no output schema, the description omits the return shape needed to actually use video_job polling (job id/handle), and leaves five parameters undocumented. Strong on routing, thin on everything needed to invoke and follow up 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% across 7 parameters, so the description must compensate, and it only explains two: full=true (verbatim extraction) and comments=True (adds comment-section controversy analysis). url, lang, model, prompt, and scan_cuts get no explanation anywhere.

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

Purpose4/5

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

States a specific verb+resource: start a background job for long videos to avoid client timeouts, then poll with video_job. That distinguishes it from the synchronous extraction siblings, though it never contrasts itself with video_full or video_watch, which look like the nearest overlapping tools.

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

Usage Guidelines5/5

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

Explicitly prescribes an ordering (video_meta → video_plan → video_window / video_sheet) that defers this tool, and names the one condition that justifies it: only when a full verbatim transcript is actually wanted (full=true). It also names video_job as the required follow-up, so the agent knows the alternative and the condition.

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

video_metaA

读取公开视频的元数据(标题、UP主、时长、发布日期、播放/点赞、是否有字幕)。 不下载任何媒体,几乎零成本。用于判断"这个视频值不值得看"。

NameRequiredDescriptionDefault
urlYes

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 does carry real behavioral weight: "不下载任何媒体,几乎零成本" tells the agent this is a side-effect-free, low-latency read. However, it does not cover failure modes for private/geo-blocked videos, rate limits, or whether any network cost exists beyond 'almost zero'.

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?

Three short clauses ordered well: what it returns, then the cost/side-effect guarantee, then the decision it supports. Zero filler and the returned-field list is front-loaded.

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

Completeness4/5

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

There is no output schema, so the field enumeration in the description usefully doubles as the return-value contract. For a single-parameter read tool with no annotations, the only meaningful gap is the accepted URL format.

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

Parameters3/5

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

Schema coverage is 0% for the single `url` parameter, so the description must compensate; it only weakly does so via "公开视频", implying the URL must point at a publicly accessible video. No format examples (short link vs. full URL vs. BV id) are given.

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

Purpose4/5

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

States a concrete verb+resource: reads metadata of a public video, and enumerates the returned fields (title, uploader, duration, date, views/likes, subtitle presence). This field list effectively distinguishes it from siblings like video_subs or video_full, though it never names them explicitly.

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?

"用于判断这个视频值不值得看" implies a usage context (cheap pre-check before committing to heavier tools), but there is no explicit when-not guidance and no sibling is named as the alternative. An agent must infer that this is the triage step before video_full/video_watch.

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

video_ocrA

把画面上的字读出来(本地 OCR,离线;不靠人声、不需要平台字幕)。 专治「没有人声、文字全在画面上」的视频:brief 报「几乎无人声」之后就该用它。 只下这一段的最低画质视频,按 n 个时间点取帧识别,结果带时间码、可直接引用。 代价:约 1 帧 0.3-0.8s(CPU);n 越大越细,12 帧适合 5-6 分钟。 引擎是可选依赖(≈80MB):不传 install 时只告诉你装到哪、怎么换目录; 传 install=true 就地下载并先复述位置。

NameRequiredDescriptionDefault
nNo
endNo
urlYes
startNo0
widthNo
installNo

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 does so: it discloses that it downloads only the lowest-quality segment, that cost is ~0.3–0.8s per frame on CPU, that the OCR engine is a ~80MB optional dependency, and exactly what install=false vs install=true do. This is unusually rich operational context.

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

Conciseness4/5

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

Front-loads the core action and the trigger condition, then cost, then the install caveat — a sensible order. Markdown emphasis and quoted phrasing add some visual noise, but no sentence is filler.

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

Completeness4/5

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

For a 6-parameter tool with no output schema and no annotations, it covers purpose, trigger, cost, dependency handling, and that results carry timecodes. Only the width parameter and the exact result shape (beyond 'timecoded, directly quotable') are left unexplained.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it explains n (number of sampled time points, 12 for a 5–6 minute video) and install (in-place engine download vs. reporting the install location). start/end are implied by 'only download this segment' and url is self-evident, but width is never explained.

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

Purpose5/5

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

States a specific verb and resource: read text on screen via local offline OCR, explicitly noting it does not use audio or platform subtitles. This clearly separates it from siblings like video_subs (subtitles) and video_visual_scan (general visual scanning).

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

Usage Guidelines5/5

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

Gives an explicit trigger condition — use it after video_brief reports 'almost no speech, text all on the picture' — and names the alternative scenario it is not for. The routing logic is directly actionable.

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

video_planA

0 下载:按切点/长静音把视频切成章节,给出建议观看顺序。 长视频默认先调它,再挑 2-3 个章节用 video_window / video_sheet,不要一上来就转写全片。

NameRequiredDescriptionDefault
urlYes
windowNo

TDQS

A4/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 behavioral burden. It usefully discloses that it performs no download and that segmentation is based on cut points and long silences, and it describes the recommended follow-up workflow. However, it does not state output structure, latency, cost, or any permission/authentication 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?

Two short sentences with no filler. The core purpose and the workflow recommendation are front-loaded and easy to scan.

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 tool's purpose and workflow role, which is the most important context. But for a tool with no annotations, no output schema, and 0% schema description coverage, it leaves the window parameter and the shape of the returned chapters/order unexplained.

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 mention either parameter. The url is obvious from context, but the window parameter and its default of 300 are completely unexplained, so the description fails to compensate for the schema 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 states a concrete verb and resource: split the video into chapters at cut points or long silences and recommend a viewing order. It also explicitly distinguishes this tool's role from sibling tools by directing the agent to call it first for long videos before using video_window or video_sheet.

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

Usage Guidelines5/5

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

It gives explicit when-to-use guidance (long videos, call this first) and when-not-to-do-something (do not transcribe the entire film immediately). It names the alternative tools to use afterward and how many chapters to pick, leaving little to inference.

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

video_sheetB

只下载这一段(例如 20 秒 ≈ 0.9MB),返回一张拼图,每格左上角烧着绝对时间码。 用于"看一眼这段画面在发生什么"。

NameRequiredDescriptionDefault
endNo20
urlYes
colsNo
rowsNo
startNo0
heightNo

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations at all, the description does carry some real burden: it discloses the cost profile (only the segment is fetched, 20s ≈ 0.9MB), the single-image output form, and that timecodes are burned in. It omits what happens on fetch failure, how the grid dimensions affect output size, and whether the returned image is inline content or a file reference.

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

Conciseness4/5

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

Two short sentences, front-loaded with the distinguishing behavior and a concrete size example that earns its place by conveying cost. The quoted colloquial use-case phrase is slightly informal but functional; nothing is padded.

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?

Because there is no output schema, the description's explanation of the returned contact sheet is genuinely needed and delivered. However, for a tool with six parameters, zero schema coverage, and zero annotations, the absence of any parameter-level guidance leaves the agent guessing on grid layout and resolution.

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?

Six parameters with 0% schema description coverage and no annotations, and the description only indirectly gestures at start/end via '这一段' and the '20 秒' example that matches the end default. cols, rows, height, and the url parameter are entirely unexplained, so the text fails to compensate for the schema gap.

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

Purpose4/5

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

The description states a concrete output artifact (a tiled contact sheet with absolute timecodes burned into each cell's top-left corner) plus a scope constraint (only this segment is downloaded). This is far more specific than the bare name 'video_sheet', though it never names or contrasts the closest siblings such as video_frames or video_visual_scan.

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?

"用于'看一眼这段画面在发生什么'" gives an implied use case — quick orientation/overview of a clip — which is real guidance. But there is no explicit when-not condition, no mention of when to prefer video_frames / video_window / video_visual_scan, and no prerequisites (e.g. does the url need to be directly downloadable?).

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

video_soundscapeA

听这一段"有什么声音"(不是"说了什么"):AudioSet 527 类多标签 + 概率 + 时间码。 能覆盖吃饭/咀嚼、敲桌子/拍、水声、杯子碰撞、拖拽、塑料袋等;喝水/吞咽没有对应类。 只下这一段音频(60 秒约 1MB)。概率是模型输出,不是事实断言,要结合画面核对。

NameRequiredDescriptionDefault
endNo60
hopNo
urlYes
startNo0
top_kNo
windowNo
min_probNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does so well: it discloses download cost (~60s ≈ 1MB), clarifies probabilities are model outputs rather than facts, and instructs cross-checking against the visual. These are exactly the behavioral traits an agent needs and none are in structured fields.

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?

Dense and front-loaded: purpose, coverage, limitation, cost, and caveat each appear as a distinct clause with little waste. Slightly list-like but every sentence earns its place.

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?

Strong on behavioral and semantic context (what it detects, cost, output nature, caveats) but weak on the mechanics of its 7 undocumented parameters and no output schema is present. An agent knows what the tool is for but not precisely how to tune its 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 coverage is 0% across 7 parameters, and the description explains none of them — start/end, hop, window, top_k, min_prob are all left to the schema titles and defaults. The only implicit hint is the 60-second segment size. For a 7-param tool this leaves the agent guessing how to configure sensitivity and windowing.

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

Purpose5/5

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

States a specific verb and resource — sound-event multi-labeling over an audio segment — and explicitly distinguishes it from transcription ('what was said'). The AudioSet 527-class / probability / timecode output description makes the operation unambiguous and separable from speech-oriented siblings like video_subs.

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?

Clearly frames the when-to-use ('not what was said') and gives concrete coverage examples (chewing, knocking, water) plus an explicit limitation (drinking/swallowing has no class). It doesn't name a specific alternative sibling for the speech case, so it stops short of a 5.

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

video_subsA

只读平台字幕轨(人工字幕优先,其次自动字幕),0 媒体下载。 方言/口音重、ASR 不确定时,先看这里有没有原字幕;没有再用 ASR 或看画面硬字幕。

NameRequiredDescriptionDefault
urlYes
langNozh
limitNo

TDQS

A4.2/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose key traits: read-only, no media download, and a fallback-priority order for subtitle sources. It does not cover permissions, rate limits, or the shape of the returned data, which keeps it from a 5.

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

Conciseness5/5

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

Two dense sentences: capability and constraint first, then the routing advice. Every clause carries information and nothing is redundant.

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 tool with no annotations and no output schema, the description explains purpose and routing well, but leaves the parameters undocumented and says nothing about what the returned subtitle data looks like (format, timestamps, truncation by limit). Adequate but 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?

Schema description coverage is 0% and none of the three parameters (url, lang with default 'zh', limit with default 200) are explained in the description. The 'lang' default is especially consequential given the dialect discussion, but no guidance is given on overriding it or on what 'limit' bounds.

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 gives a specific verb and resource — reading platform subtitle tracks — and states the selection preference (manual subtitles first, auto subtitles second) plus the '0 media download' constraint. This clearly separates it from video_audio (ASR) and video_frames/video_visual_scan (hard-coded subtitles).

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

Usage Guidelines5/5

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

It explicitly says when to use it (heavy dialect/accent, uncertain ASR) and what to do if it fails ('if none, then use ASR or check hard-coded subtitles in the frames'), naming both alternates. There is no ambiguity about routing.

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

video_visual_scanA

抽样看画面:全片均匀取样(有切点时按切点取)n 帧,每帧烧上绝对时间码,拼成图返回。 用于没有声音、或长时间无语音的视频。代价:下最低画质视频(7 分钟约 14-21MB),用完即删。

NameRequiredDescriptionDefault
nNo
urlYes
colsNo
rowsNo

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that a lowest-quality video is downloaded (approx. 14-21MB for 7 minutes) and deleted afterwards, so the agent knows about cost and cleanup. It omits failure behavior (bad URL, inaccessible video) and does not describe the returned image's layout beyond "stitched."

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 tightly packed sentences: what it does first, then when to use it, then the cost caveat. No filler, and the critical constraint is front-loaded.

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

Completeness4/5

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

No output schema and no annotations, so the description must cover purpose, cost, and usage, which it does. What's missing is the meaning of cols/rows and any note on how the resulting image is laid out, which matters for interpreting the returned contact sheet.

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 coverage is 0%, so the description must compensate. It explains n (number of frames) and the sampling rule, but cols and rows (the grid layout of the stitched image, defaults 6x4) are never mentioned anywhere, and url is only implied. Half the parameters remain opaque.

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

Purpose4/5

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

States a specific verb and resource: uniformly sample n frames across the video, burn absolute timecodes, stitch into an image and return it. It also indicates cut-point-aware sampling, which no sibling exposes. It does not distinguish itself from close siblings like video_frames or video_sheet, which also deal with visual frames, so a perfect score is not warranted.

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?

"Used for videos without sound, or long stretches without speech" gives a clear selection condition and implicitly steers audio-capable tasks to video_audio / video_soundscape / video_subs. However, it never names an alternative tool or states an explicit exclusion, so the agent must infer the routing.

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

video_watchA

分段看片:一次只前进一段(默认 5 分钟,约 1k 字),看完就停,等调用方决定。

这就是「一段一段看、看一点说一点」的入口:

  • 第一次调用:从 0 开始,返回第 1 段的要点 + 进度;

  • 继续看:再调一次(cursor="next" 接着上次的位置);

  • cursor="restart" 从头看,cursor="stop" 清掉进度。 返回里带「已看多少 / 共多少(百分比)」;看完会明说「看完了」。 要某段逐字再传 video_window;不要用 video_brief(level="full") 一次拉全文。

NameRequiredDescriptionDefault
urlYes
langNozh
modelNosmall
cursorNonext
minutesNo
sessionNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the load well: it discloses statefulness (progress is persisted and can be cleared via cursor="stop"), the default chunk size, and that returns include point summaries plus a seen/total percentage and an explicit completion signal. It does not explain what the 'session' parameter does for progress isolation, which is a notable gap for a stateful tool.

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

Conciseness4/5

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

Front-loaded one-line summary followed by bulleted call patterns, so the important scoping and sequencing information is easy to scan. Slightly padded by the near-duplicate framing sentence ('一段一段看、看一点说一点'), but no bullet is wasted.

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

Completeness4/5

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

For a 6-parameter stateful tool with no annotations and no output schema, the description covers call sequencing, mutation of stored progress, chunk sizing, and the shape of the return (progress percentage, completion notice). Remaining gaps are the session parameter and the lang/model knobs, which an agent may need to use correctly.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It documents cursor's semantics (next/restart/stop) thoroughly and implies minutes via the '5 分钟' default, but leaves url, lang, model, and especially session unexplained.

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

Purpose5/5

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

States a specific action and resource: incremental, segmented viewing of a video that advances one chunk at a time (default 5 min, ~1k chars) and then stops for the caller to decide. It explicitly names the siblings it is not: video_window for verbatim text and video_brief(level="full") for a full pull.

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

Usage Guidelines5/5

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

Gives an explicit call sequence — first call starts at 0, subsequent calls pass cursor="next", cursor="restart" rewinds, cursor="stop" clears progress — plus a clear exclusion ('do not use video_brief(level="full")') and a redirect to video_window. The when-to-use-vs-alternative mapping is fully spelled out.

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

video_windowA

只看某个时间窗:该窗内的台词(带时间码)与停顿。 有缓存/平台字幕则零下载;否则只下该窗口的音频做 ASR,不转写全片。 方言可传 lang=yue / prompt=...。适合"刚才那 30 秒他说了什么",也是长视频抽样的主力工具。

NameRequiredDescriptionDefault
endNo60
urlYes
langNozh
modelNosmall
startNo0
promptNo

TDQS

A3.8/5.0
Behavior4/5

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

No annotations exist, so the description carries the full burden, and it does disclose the operationally important trait: zero download when cache/platform subtitles exist, otherwise only that window's audio is fetched for ASR. That cost/latency profile is exactly what an agent needs to decide between this and a full run. It is silent on failure behavior for out-of-range windows and on output granularity beyond 'lines + pauses'.

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

Conciseness4/5

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

Front-loaded with the core purpose, then cost behavior, then parameters, then use cases — a sensible order in four tight lines. Minor redundancy between '只看某个时间窗' and '该窗内的台词', but nothing that wastes the reader's time.

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?

It usefully describes the return content (timecoded lines plus pauses) despite there being no output schema, and covers the caching tradeoff. But for a 6-parameter tool with zero annotation and zero schema-description coverage, leaving time-unit semantics and the model parameter unexplained means an agent still has to guess on invocation.

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

Parameters3/5

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

Schema description coverage is 0% across 6 parameters, so the description must compensate. It does name lang (yue) and prompt, and implicitly defines start/end via the 'time window' framing, but it never states the accepted format or units for start/end — a real gap given the schema allows both string and number with string defaults ('0', '60'). The model parameter is entirely undocumented.

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

Purpose4/5

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

States a specific verb-and-resource: 'only look at a time window' returning the lines in that window with timecodes plus pauses. It implicitly carves out a distinct scope from full-transcript siblings ('不转写全片'), so an agent can tell it apart from video_full/video_subs without opening schemas. It stops just short of naming the alternative tool explicitly.

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

Usage Guidelines4/5

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

Gives concrete when-to-use guidance: '刚才那 30 秒他说了什么' and '长视频抽样的主力工具', plus the condition '方言可传 lang=yue'. It signals when not to use it ('不转写全片'), but never names the sibling tool an agent should pick for full transcription.

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

vidlens_doctorA

自检:python / ffmpeg / yt-dlp / 依赖 / whisper 模型 / 磁盘 / 网络。哪里断了直接说。

NameRequiredDescriptionDefault

No 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 the full burden. It discloses the scope of checks and that failures are reported explicitly (哪里断了直接说), but never states that it is read-only and safe, whether it makes network calls with side effects, or how long a full probe takes. Adequate but shallow for a zero-annotation tool.

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

Conciseness4/5

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

Two short sentences, front-loaded with the verb and the checklist. The telegraphic style is efficient, though the slash-separated list is slightly terse enough to read as a note rather than guidance.

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

Completeness4/5

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

For a zero-parameter diagnostic with no output schema, listing the checked subsystems and stating that breakage is reported directly is nearly enough. Missing only whether repeated invocation is harmless and roughly what the report contains.

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 takes zero parameters, so baseline is 4. Nothing about parameters needs explaining, and the description correctly spends no words on them.

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

Purpose4/5

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

States a specific action (self-check / 自检) and enumerates exactly what is inspected: python, ffmpeg, yt-dlp, dependencies, whisper model, disk, network. This is clearly distinct from the video_* siblings. It doesn't explicitly distinguish itself from vidlens_models, which also touches the whisper model area.

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 implication that you run this when something is broken is present but only implied, and there is no explicit when-to-use / when-not-to-use or mention of vidlens_models as an alternative. An agent can reasonably infer this is the first-call diagnostic, but it is not stated.

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

vidlens_modelsA

本地模型目录 / 硬件建议 / 下载(大小、落点、换目录都说清)。 action=list 看目录(含本机解析出的真实路径);action=recommend 看这台机器适合哪个; action=download 装某个模型:先只报大小与落点,传 confirm=true 才真下。

NameRequiredDescriptionDefault
nameNo
actionNolist
confirmNo

TDQS

A4/5.0
Behavior4/5

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

With zero annotations, the description carries the full burden and does the most important job: it discloses the two-phase download safety gate — without confirm=true the call only reports size and install location, and only confirm=true actually fetches. Undisclosed traits remain (default install path, disk-space/overwrite behavior, whether the download blocks or is async, network failure handling), which keeps this below 5.

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

Conciseness4/5

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

Purpose and the size/location/confirm guarantees come first, followed by a compact per-action breakdown — well front-loaded with no filler. The slash-delimited, bolded telegraphic style is slightly dense to parse but every clause carries information an agent needs.

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?

Three optional params, no annotations and no output schema mean the description must stand alone. It covers the risky path (download) but says nothing about what list/recommend return, whether download is long-running, or what happens on a partial/failed install — gaps that matter for a tool that mutates local disk.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate. It effectively documents `action` (three named values with meanings) and `confirm` (gates the real download), but `name` — the parameter that selects which model — is only implied by "装某个模型" with no format or accepted values. The parenthetical about "换目录" (changing directory) also hints at configuration that no parameter exposes, leaving a 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 names the resource (local model catalog / hardware recommendation / download) and enumerates three concrete verbs via action=list, action=recommend, action=download, each with its own scope. An agent can tell immediately that this tool manages models rather than video content, distinguishing it from the video_* siblings without opening the schema.

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

Usage Guidelines4/5

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

Each action value is given a use condition: list to see the catalog with resolved local paths, recommend to pick a model for this machine, download to install one. However, there is no guidance on ordering (e.g. call recommend before download), no exclusion of when-not-to-use, and no mention of the vidlens_doctor sibling for environment problems.

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

Tool Schema Changelog

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

  1. 18 tool updatesv1.6.3
    • First observedvideo_audio
    • First observedvideo_brief
    • First observedvideo_comments
    • First observedvideo_frames
    • First observedvideo_full
    • First observedvideo_job
    • First observedvideo_job_start
    • First observedvideo_meta
    • First observedvideo_ocr
    • First observedvideo_plan
    • First observedvideo_sheet
    • First observedvideo_soundscape
    • First observedvideo_subs
    • First observedvideo_visual_scan
    • First observedvideo_watch
    • First observedvideo_window
    • First observedvidlens_doctor
    • First observedvidlens_models

TDQS

A3.8/5.0

Scored across 18 tools

Disambiguation4/5

Descriptions actively steer the agent away from the wrong tool (e.g. video_subs before ASR, video_sheet/frames instead of video_full, video_window for a single span vs video_watch for incremental progress), which is unusually strong guidance. Still, there are clusters of near-neighbours: video_brief / video_watch / video_window all can yield transcripts of the same footage, and video_sheet / video_frames / video_visual_scan / video_ocr all sample frames, so a hurried agent could easily pick the wrong one.

Naming Consistency4/5

Nearly everything follows a single `video_<noun>` scheme with short, readable suffixes. The two infrastructure tools break the prefix (vidlens_models, vidlens_doctor), and a few names mix styles (video_job_start is noun_verb, video_full is an adjective), but the overall set is predictable.

Tool Count4/5

18 tools is on the heavy side, but they form a deliberate cost tier (meta → plan → window → sheet → OCR → job) rather than a flat pile. Each tool has a stated cheaper alternative it exists to replace, though a few of the visual/transcript tools could plausibly be merged.

Completeness5/5

The surface covers the full video-analysis lifecycle: metadata, subtitles, planning, incremental watching, time windows, audio events, soundscape, frame/sheet/scan visuals, OCR, comments, plus model management, diagnostics and async job polling for long runs. No obvious dead ends remain for the stated domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers