Skip to main content
Glama
john-ops-lab

EasySourceFlow

by john-ops-lab

EasySourceFlow

把长文和视频交给 Agent,先看总结,再决定要不要看完。

无论是在飞书、微信还是其他通讯工具中,只需把网页、公众号文章、视频链接或文件发给你的 Agent。Agent 会调用 EasySourceFlow 提取内容、生成结构化总结,并把结果直接发回当前对话,帮你快速判断内容是否值得深入阅读或观看。

此外: 本地服务还支持下载 B站或 YouTube 内容,可选择下载完整视频,也可以只下载音频。

快速开始 · Agent 接入 · 支持的来源 · 隐私与安全 · 完整文档

Python 3.10+ macOS MCP Version License

EasySourceFlow Web 控制台

为什么需要 EasySourceFlow?

Agent 很擅长调用工具,但不应该各自重复实现网页抓取、字幕判断、音频转写、提示词管理和文件写入。EasySourceFlow 把这些流程收敛到一个可恢复、可检查的本地服务中。

  • 统一能力,按 Agent 接入:OpenClaw、Codex、Claude Code 和其他 stdio MCP 客户端调用同一套工具,并使用各自准确的安装步骤。

  • 结果由服务直接交付:Agent 原样返回最终 Markdown,不做二次总结或转写。

  • 优先使用可靠来源:视频优先平台字幕,缺失时才进入本地 ASR,并在结果中标明来源。

  • 任务不会因短暂断线消失:SQLite 持久化任务、缓存、重试和恢复状态。

  • 数据留在本机:服务默认只监听 127.0.0.1,输出、数据库和凭据都由用户本地管理。

Related MCP server: Open CLAW Knowledge Distiller

主要能力

  • Web 控制台提交链接或本地文件,查看任务、结果、收藏和全文搜索。

  • Web 控制台单独下载 Bilibili/YouTube 视频或音频,支持进度、取消、重试和本机文件交付;该能力不向 Agent 开放。

  • Bilibili 字幕提取、扫码后自动接入登录态、本地 ASR 回退和资源包输出。

  • YouTube 登录后自动接入 Chrome 登录态、人工/自动字幕优先级、本地 ASR 回退和可诊断错误。

  • 微信公众号与普通网页正文提取,支持浏览器兜底。

  • 模型接入预置 DeepSeek、OpenAI、通义千问、Kimi、智谱、MiniMax、Gemini、硅基流动、xAI、豆包、百度千帆、腾讯混元和 OpenRouter。

  • 支持 Ollama、LM Studio 本地模型;模型 ID 可选预设,也可按服务商实际可用模型直接输入。

  • 所有云端模型共用一份可在 Web 编辑的总结规则与 Markdown 模板。

  • 视频自动使用 Pro,并生成与核心要点一一对应的可点击时间轴。

  • 结果收藏会一并复制 Markdown、原始字幕、转写和来源元数据。

  • 缓存感知模型、提示词和流水线版本,支持强制重新处理。

  • 本地备份、日志轮转、清理预览和 macOS LaunchAgent 自启动。

支持的来源

来源

处理方式

备注

普通网页

正文与元数据提取

新闻、教程、博客等

微信公众号

正文节点、懒加载图片、浏览器兜底

仅处理可访问页面

Bilibili

平台字幕优先,本地 ASR 回退

扫码后自动接入登录态

YouTube

人工字幕优先、原语言自动字幕次之、本地 ASR 回退

登录后自动接入 Chrome 登录态

飞书等云文档

Agent 连接器读取完整正文后提交

保留原始文档链接并进入结果库

本地文件

PDF、DOCX、EPUB、TXT、Markdown、字幕、HTML

内容由浏览器或 Agent 提交

快速开始

环境要求

  • Python 3.10 或更高版本

  • macOS 为当前主要支持平台

  • Google Chrome,用于 Bilibili 扫码、YouTube 登录和受限网页兜底

  • 视频处理建议安装 ffmpeg 和至少一种 Whisper 后端;yt-dlp 会随 Python 包安装

  • YouTube 处理需要 Deno 2.3+(推荐)或 Node.js 22+,安装会同时带上匹配的 yt-dlp-ejs

  • 使用云端总结时,需要对应服务商的模型 API Key;Ollama 和默认未启用鉴权的 LM Studio 不需要 Key

安装

在当前 GitHub 仓库页面点击 Code → HTTPS,复制仓库地址,然后把下面的 REPOSITORY_HTTPS_URL 替换为该地址:

git clone REPOSITORY_HTTPS_URL EasySourceFlow
cd EasySourceFlow

python3 -m venv .venv
.venv/bin/python -m pip install --upgrade pip
.venv/bin/python -m pip install -e ".[browser]"
cp .env.example .env

启动服务并打开控制台:

scripts/easysourceflow start
scripts/easysourceflow open

默认地址为 http://127.0.0.1:8765/。运行 scripts/easysourceflow status 看到服务地址后,即表示本地服务已经启动。

首次配置

打开 Web 控制台后,按以下顺序完成配置:

  1. 进入“维护 → 模型”,选择服务商并填写 API Key。页面会自动读取当前账号可用的模型,也可点“刷新模型列表”;选择 Fast/Pro 后设为当前模型,系统会先验证,失败时保留原配置。本地 Ollama/LM Studio 可按实际鉴权要求留空 Key。配置第二套模型后,它会显示为“自动备用”:主模型失败时重试一次,主、备用都失败才使用本地基础摘要。

  2. 如果使用 Clash、Surge、Mihomo 等代理,先按下方“Fake-IP 代理”说明检查网络;不要直接关闭本地 URL 防护。

  3. 处理 Bilibili 或 YouTube 前,进入“维护 → 账号与授权”完成扫码或登录。仅处理普通公开网页时可以跳过。

  4. 按需进入“维护 → 提示词”调整通用总结模板,进入“维护 → Agent 接入”复制 MCP 配置并安装 Skill。

  5. 查看左下角状态:绿色“已就绪”表示全部检查正常;黄色可能只是 Bilibili/YouTube 尚未登录,不影响公开网页,红色需要点击并按引导处理。

完成后回到“新总结”,先提交一个公开网页链接验证模型和输出,再测试需要登录或本地 ASR 的视频。

Fake-IP 代理

部分代理会把公网域名解析到 198.18.0.0/15,严格 URL 校验会将其当作非公网地址拒绝。请用 EasySourceFlow 的 Python 环境检查实际解析结果:

.venv/bin/python -c "import socket; print(sorted({item[4][0] for item in socket.getaddrinfo('www.bilibili.com', 443)}))"

如果结果包含 198.18.x.x198.19.x.x

  1. 打开“维护 → 网络与安全”。

  2. 开启“信任下列 Fake-IP 网段”。

  3. 保留默认的 198.18.0.0/15,点击“保存网络设置”;Web 保存后立即生效,无需重启。

如果代理明确使用其他 Fake-IP 地址池,只添加代理配置中真实使用的 CIDR。不要把真实公司内网、家庭局域网、loopback 或 link-local 网段加入信任清单,也不要用 EASYSOURCEFLOW_ALLOW_LOCAL_URLS=true 代替 Fake-IP 配置。

也可以手工修改 .env,但修改后必须重启:

EASYSOURCEFLOW_TRUST_FAKE_IP=true
EASYSOURCEFLOW_FAKE_IP_CIDRS=198.18.0.0/15
scripts/easysourceflow restart

处理 B站或 YouTube 前,进入“维护 → 账号与授权”点击对应登录按钮。扫码或登录完成后,EasySourceFlow 会自动检测并接入 Chrome 登录态;只有检测失败或五分钟超时时才显示“手动重试”。已接入时可以点“退出登录”解除本工具的授权,不会退出 Chrome 中的账号。接入后,YouTube 任务直接读取所选 Chrome 配置档的当前登录态,避免普通浏览器 Cookie 被轮换后继续使用失效快照;本地过滤文件仅用于状态检查和兼容兜底。

需要保存音视频时,打开侧边栏“音视频下载”,粘贴单个 Bilibili 或 YouTube 链接,选择视频清晰度或音频格式。下载文件保存在 EASYSOURCEFLOW_DATA_DIR/media-downloads/,不会写入总结结果库,也不会作为 MCP/Agent 工具暴露。

常见问题

现象

处理方式

启动后网页打不开

运行 scripts/easysourceflow status,再用 scripts/easysourceflow logs 查看启动错误。

invalid_url 且提示 198.18.0.0/15

按上方 Fake-IP 步骤在“维护 → 网络与安全”开启可信网段。

模型列表没有最新型号

在“维护 → 模型”填写或选择已保存的 API Key,点击“刷新模型列表”;失败时仍可手工输入官方模型 ID。

模型测试失败

在“维护 → 模型”确认服务商、模型 ID、API Key、余额和 API 地址,再重新测试;失败不会替换当前模型。

Bilibili/YouTube 提示需要 Cookie

在“维护 → 账号与授权”重新登录,确认当前 Chrome 账号能打开原视频。

缺少 ffmpeg、Whisper 或其他依赖

运行 scripts/easysourceflow health 查看具体缺项,并参考部署说明

常用命令:

scripts/easysourceflow status
scripts/easysourceflow health
scripts/easysourceflow restart
scripts/easysourceflow logs
scripts/easysourceflow regression
scripts/easysourceflow youtube-regression --force-refresh

macOS 开机自启动

scripts/easysourceflow install-launchd
scripts/easysourceflow launchd-status

运行副本默认位于 ~/.local/share/easysourceflow/launchd,避免后台进程直接依赖用户文档目录中的源码。

Agent 接入

EasySourceFlow 的 MCP 工具契约是通用的,但不同 Agent 的注册命令、Skill 目录、附件路径和会话刷新方式不同。先选择你的客户端:

  • OpenClaw:使用原生 mcp addmcp doctor --probeskills install,更新 Skill 后发送 /new

  • Codex:使用 codex mcp add,Skill 安装到 .agents/skills

  • Claude Code:使用 claude mcp add,Skill 安装到 .claude/skills

  • 其他 MCP 客户端:按客户端官方格式配置本地 stdio 服务。

所有客户端最终都启动同一个本机适配器:

<PROJECT_ROOT>/.venv/bin/easysourceflow-mcp

模型 API Key 只由 EasySourceFlow 管理,不需要复制给 Agent。真实项目路径只写入本机配置,不要提交到 Git。

Skill 会要求 Agent:

  1. 使用异步任务提交链接并持续查询同一个 job_id

  2. result.summary_markdown 原样交付,不做二次总结。

  3. 视频默认使用 Pro,并保留字幕或 ASR 来源标记。

  4. 用户回复“收藏”时收藏最近一次成功结果。

  5. 裸发或重复发送链接、PDF 等附件时仍调用 EasySourceFlow;PDF 使用原始文件,不使用可能截断的聊天预览。

  6. 飞书 Wiki/Docs 等需要登录的云文档先由对应连接器读取完整正文,再提交给 EasySourceFlow;Agent 不得读取后自行总结。

音视频下载是本机 Web 专用功能,不在 MCP 工具清单中,Agent 不能触发下载。

完整的通用契约见 Agent 接入指南,工具参数见 MCP API,飞书差异见飞书适配

工作原理

flowchart LR
    A[Agent / Web] -->|MCP 或 HTTP| B[easysourceflowd]
    W[Web 音视频下载] --> J[受控 yt-dlp / FFmpeg]
    J --> K[本机 media-downloads]
    B --> C[网页与视频提取]
    C --> D{有可靠字幕?}
    D -->|是| E[平台字幕]
    D -->|否| F[本地 ASR]
    E --> G[通用提示词 + 模型]
    F --> G
    G --> H[Markdown 与资源包]
    H --> I[结果库 / 收藏 / 搜索]

底层提取、转写、模型调用和文件写入都由服务完成,Agent 只负责选择工具并交付结果。

输出与收藏

成功任务会写入 EASYSOURCEFLOW_OUTPUT_DIR。视频资源包通常包含:

  • summary.md

  • metadata.json 与来源信息

  • 平台字幕或本地转写

  • 带时间戳的完整文本

  • 核心要点时间轴

Web 结果页会渲染 Markdown,并提供目录、复制、下载和收藏操作。收藏会复制完整资源包,同时阻止重复收藏。

通用总结提示词

Web 控制台中的提示词对所有已配置模型服务统一生效。默认模板包括:

  • 只依据来源内容,不补充外部事实

  • 字幕与转写完整性检查

  • 一句话结论、核心要点、详细笔记和可引用摘录

  • 行动项、沉淀建议、推荐标签与质量检查

标题、作者、提取方式、字幕状态、来源类型要求和正文由程序自动附加。更改提示词后,新任务不会错误复用旧缓存。本地抽取式兜底不调用模型,因此不使用该提示词。

隐私与安全

  • API Key、Cookie 和本机路径只放在被 Git 忽略的 .env 或本地配置中。

  • Agent 配置不需要持有模型 API Key。

  • 通知和日志不包含来源正文、完整字幕、Cookie 或密钥。

  • Web 本地文件通过内容上传;Agent 原始附件只允许从明确配置的上传目录读取。OpenClaw 保留标准入站目录兼容,其他客户端必须配置自己的最小附件目录。

  • 清理默认只做 dry-run,确认后才执行删除。

  • CI 会运行测试、Ruff 和带脱敏输出的 Gitleaks 历史扫描。

公开发布前请执行 GitHub 发布检查清单。安全问题请参阅 SECURITY.md

开发与验证

PYTHONPATH=src .venv/bin/python -m compileall -q src tests
PYTHONPATH=src .venv/bin/python -m unittest discover -s tests -v
.venv/bin/ruff check src tests
scripts/easysourceflow regression

测试覆盖提取、YouTube/Bilibili 字幕选择、ASR 质量、任务恢复、缓存、输出、HTTP、MCP、Web 交互和敏感信息防护。真实平台回归不会进入普通 CI。

已知限制

  • 当前主要针对 macOS 本地运行和 launchd 部署。

  • YouTube 仍可能按视频、账号或客户端要求 Cookie、PO Token 或更新版 yt-dlp;EasySourceFlow 不绕过平台权限。

  • 音视频下载只处理单个 Bilibili/YouTube 链接,不处理播放列表、DRM、付费或无权保存的内容。

  • 本地 ASR 的速度与质量取决于所选后端和模型。

  • 当前不提供 Obsidian 自动写入、NotebookLM、RAG 或向量数据库。

完整文档

贡献与许可证

欢迎通过 Issue 和 Pull Request 提交问题与改进。请先阅读 贡献指南

EasySourceFlow 使用 MIT License

Available Tools

16 tools
easysourceflow_backupA

Back up the local EasySourceFlow SQLite database and output directory.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior2/5

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

Annotations are all false, so they give no safety info; the description only says 'back up' without detailing effects (e.g., overwrites, location, permissions), leaving behavior unclear.

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

Conciseness5/5

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

A single, clear sentence with no wasted words; front-loaded with the key action.

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

Completeness3/5

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

For a simple tool with no parameters or output schema, the description covers the basic purpose but omits important context like backup location, naming, or whether it can be run while jobs are active.

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?

With zero parameters, schema coverage is 100% and no param explanation is needed; baseline 4 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 clearly states the tool backs up 'local EasySourceFlow SQLite database and output directory', which matches the name and is distinct from all sibling tools.

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 (e.g., cleanup, health_check), nor does it mention preconditions or best practices.

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

easysourceflow_cancel_jobA
Destructive

Cancel a queued or running EasySourceFlow job. Running subprocess work may finish in the background, but the canceled job will not be overwritten.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesExisting job ID to cancel.

TDQS

A4.1/5.0
Behavior4/5

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

The description adds valuable context beyond annotations by noting that 'running subprocess work may finish in the background, but the canceled job will not be overwritten.' This informs the agent of side effects even though destructiveHint is true.

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 primary action and key nuance. Every word earns its place.

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

Completeness5/5

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

For a simple cancel tool with one parameter and annotations present, the description is fully adequate. It covers the cancellation behavior and subprocess implications without needing output schema details.

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?

With 100% schema coverage, the description of job_id ('Existing job ID to cancel.') adds no additional meaning beyond what the schema already provides. Baseline 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 clearly specifies the action ('Cancel') and the resource ('a queued or running EasySourceFlow job'). It distinctively separates this tool from siblings like easysourceflow_retry_job or easysourceflow_get_job.

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?

While the description implies usage when cancellation is needed, it provides no explicit guidance on when not to use or how it compares to alternatives such as easysourceflow_retry_job. Usage is implied but not directly addressed.

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

easysourceflow_cleanupA
Destructive

Preview or remove old EasySourceFlow temporary artifacts. Defaults to dry-run.

ParametersJSON Schema
NameRequiredDescriptionDefault
daysNo
dry_runNo

TDQS

A3.5/5.0
Behavior4/5

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

The description adds value beyond annotations by disclosing the default dry-run behavior and the option to preview before removal. This aligns with the destructiveHint=true annotation without contradiction.

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, highly concise, with essential information front-loaded.

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?

Adequate for a simple tool with two parameters, but lacks description of return values or confirmation behavior. No output schema present.

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 description must compensate. It adds context for 'dry_run' but not for 'days'. Only minimal inference from 'old' supports the days parameter.

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

Purpose4/5

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

The description clearly states the tool previews or removes old temporary artifacts. It distinguishes from siblings like easysourceflow_backup by focusing on cleanup. However, it does not specify what qualifies as 'temporary artifacts'.

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 via 'Preview or remove' and notes default dry-run, but does not provide explicit guidance on when to use vs. alternatives or exclusions.

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

easysourceflow_favorite_resultA

Favorite an EasySourceFlow summary. If the user replies exactly '收藏' after you returned an EasySourceFlow summary, call this tool without arguments to favorite the most recent result. You can also pass job_id, output_markdown_path, or relative_path when available.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idNoOptional EasySourceFlow job ID whose result should be favorited.
relative_pathNoOptional output relative_path from /outputs.
output_markdown_pathNoOptional absolute output_markdown_path returned by EasySourceFlow.

TDQS

A4.7/5.0
Behavior4/5

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

Discloses that the tool modifies state (favorites) and adds context about optional parameters. Annotations confirm it's not read-only or destructive.

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 sentences, no wasted words, clear and front-loaded.

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?

Covers purpose, usage, and parameters adequately for a simple favoriting tool with no output schema.

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 100%, but description adds usage context (calling without args, 'when available') 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?

Clearly states 'Favorite an EasySourceFlow summary' with a specific verb and resource. No sibling tool duplicates this function.

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?

Provides explicit condition for calling without arguments (user replies '收藏') and notes optional parameters when available.

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

easysourceflow_get_batchB
Read-onlyIdempotent

Get status and per-link jobs for a batch.

ParametersJSON Schema
NameRequiredDescriptionDefault
batch_idYesBatch ID returned by easysourceflow_submit_batch.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false. The description adds that the tool retrieves status and per-link jobs, which is consistent and provides some behavioral context beyond annotations, but does not elaborate on response format or side effects.

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

Conciseness4/5

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

The description is a single concise sentence that is front-loaded with the core action. It could be expanded with usage context without becoming overly long.

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 simple input schema (one parameter with full description) and annotations covering safety, the description adequately conveys the tool's purpose. However, the lack of output schema and any explanation of the return format or typical usage patterns leaves some context missing.

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

Parameters3/5

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

Schema coverage is 100% for the single parameter (batch_id), and the description does not add any additional meaning beyond what the schema provides. 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 clearly states that the tool gets 'status and per-link jobs for a batch'. The verb 'Get' is specific, and the resource 'batch' distinguishes it from sibling tools like easysourceflow_get_job (single job) and easysourceflow_list_recent_jobs (list of recent jobs).

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 (e.g., get_job, list_recent_jobs) or any prerequisites beyond the batch_id parameter.

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

easysourceflow_get_jobA
Read-onlyIdempotent

Independently query an EasySourceFlow job, optionally waiting up to 45 seconds for a state change. If status remains queued or running, call this tool again with the same job ID; do not fetch or summarize the source with another tool. Only status=succeeded with result.summary_markdown is a completed summary. If the job succeeded, the tool returns final Markdown intended for direct delivery to the user; relay it verbatim unless the user explicitly asks you to rewrite it. For chat-card delivery, put the Markdown in the message tool's card.elements markdown content; do not send card JSON as plain message text.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesJob ID returned by easysourceflow_submit_link.
wait_secondsNoWait up to this many seconds while the job is queued or running. Use 45 for agent polling.

TDQS

A4.8/5.0
Behavior5/5

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

Discloses waiting behavior, state interpretation, and output handling beyond annotations; no contradiction with readOnlyHint or idempotentHint.

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?

Compact front-loaded paragraph; each sentence adds value, though slightly dense; could benefit from bullet points for clarity.

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?

Without output schema, description fully explains return value, success condition, and delivery method; covers polling and error states adequately.

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 100%; description adds value by specifying origin of job_id and practical guidance for wait_seconds (use 45 for polling).

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 queries an EasySourceFlow job with optional waiting, distinguishing it from submission and listing siblings.

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 poll (job still queued/running) and when to stop (status=succeeded with summary_markdown), plus clear instructions not to use alternative tools.

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

easysourceflow_health_checkA
Read-onlyIdempotent

Check EasySourceFlow dependencies and runtime configuration.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint. The description adds value by specifying that it checks dependencies and runtime configuration, but does not elaborate on what dependencies or configuration aspects are checked.

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 clear sentence with no unnecessary words, effectively communicating the tool's purpose.

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

Completeness3/5

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

For a simple health check tool with no parameters and good annotations, the description is adequate but could be more complete by hinting at the output format (e.g., returns a status report). It lacks detail on what the check covers.

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 no parameters, so schema coverage is 100%. The description does not need to add parameter information; baseline is 4 for zero-parameter tools.

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: checking dependencies and runtime configuration. This is a specific verb+resource that distinguishes it from siblings like backup, submit, or cancel operations.

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-to-use or comparison with alternatives is provided. While the sibling context implies this is for health checks, the description lacks guidance on when to invoke this tool versus others.

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

easysourceflow_list_recent_jobsC
Read-onlyIdempotent

List recent EasySourceFlow jobs from the local SQLite store.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNoOptional job status filter.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the description adds minimal extra behavioral transparency. It confirms the tool reads local data but does not disclose details like pagination, order, or whether jobs are sorted by time.

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 of 10 words, perfectly concise. No fluff, immediately conveys core function.

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 is adequate for a simple read-only list tool with two optional parameters and no output schema. However, it could be more complete by mentioning the parameters (e.g., 'list recent jobs, optionally filtered by status' and that limit controls count). The absence of output schema means the description could hint at the return format.

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 description does not mention either parameter (limit, status). With schema description coverage only 50% (status has doc, limit has none), the description could compensate but does not. The agent gets no added meaning beyond the schema's minimal definitions.

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 the action (list), the resource (recent EasySourceFlow jobs), and the source (local SQLite store). It clearly distinguishes the tool's purpose from siblings like easysourceflow_get_job (which retrieves a single job) and easysourceflow_search_outputs (which searches outputs), though it could explicitly note that it queries local storage.

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 on when to use this tool vs alternatives. For example, it does not explain when to use this over easysourceflow_get_job or easysourceflow_search_outputs, nor does it mention prerequisites or limitations.

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

easysourceflow_model_statusA
Read-onlyIdempotent

Show model provider/model configuration without exposing API keys.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.1/5.0
Behavior4/5

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

Annotations already indicate readOnly, idempotent, and non-destructive behavior. The description adds the key behavioral constraint 'without exposing API keys,' which is not present in annotations and provides important security 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, efficient sentence (9 words) with no redundancy. It is front-loaded with the core action and resource.

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

Completeness5/5

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

For a simple, parameterless status tool with comprehensive annotations, the description adequately covers its purpose and key behavior (security-conscious). No output schema is needed, and the description is complete.

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

Parameters4/5

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

With zero parameters and 100% schema coverage, no parameter documentation is needed. The description adds no param info, but baseline is 4 per rules.

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 shows 'model provider/model configuration' without exposing API keys, using a specific verb 'show' and distinguishing it from sibling tools like backup or health check.

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 vs. alternatives such as easysourceflow_health_check or easysourceflow_list_recent_jobs. The description implies it's for viewing model configuration but doesn't specify conditions or exclusions.

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

easysourceflow_retry_jobA

Retry a previous EasySourceFlow job and return the new job.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYesExisting job ID to retry.
instructionNoOptional replacement instruction.
force_refreshNoIgnore cache when retrying. Defaults to true.
summary_qualityNoOptional replacement summary quality.

TDQS

A3.5/5.0
Behavior3/5

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

Annotations already indicate it's a write, non-idempotent, non-destructive. Description adds that it creates a new job, but doesn't disclose side effects like whether original job is modified or if retry is always allowed. Adequate but not rich.

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 with 10 words, front-loaded action, no wasted text. Appropriately concise.

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?

Has 4 params all documented, but no output schema and description doesn't specify return structure (e.g., job ID vs full object). Missing some operational context (e.g., whether job starts immediately). Adequate but not fully 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 covers all 4 parameters with descriptions (100% coverage). Tool description adds no extra parameter meaning beyond what schema provides. Baseline 3 applies.

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

Purpose5/5

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

Description clearly states the verb 'retry' and resource 'job', with outcome 'return the new job'. Distinguishes from siblings like get_job (status) or cancel_job (cancel), and submit_batch (new submission).

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 on when to use this tool vs alternatives like submitting a new batch or checking job status. Missing explicit context for preferred scenarios.

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

easysourceflow_search_outputsA
Read-onlyIdempotent

Full-text search generated Markdown outputs and return links to the stored Markdown files.

ParametersJSON Schema
NameRequiredDescriptionDefault
qYesSearch query.
limitNo
sourceNoOptional source type filter.

TDQS

A3.6/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint, so description does not need to repeat safety traits. Description adds basic function but no extra behavioral details (e.g., no mention of result limits or search 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?

Single sentence, 13 words, front-loaded and efficient. Every word adds value with no 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?

Adequate for a simple search tool, but lacks details on search scope, matching algorithm, result format, pagination, or how links are structured. With no output schema, more context would help agent usability.

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 67% (missing description for 'limit'), and the description adds no parameter-level details beyond the schema. It does not compensate for the missing parameter description or clarify 'source' filter.

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 the tool searches generated Markdown outputs and returns links, with a specific verb and resource. Distinguishes from siblings as the only search-focused tool for Markdown outputs.

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 usage for searching Markdown outputs but provides no explicit guidance on when to use versus alternative tools or when not to use. Context is minimal.

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

easysourceflow_submit_batchA

Submit multiple public URLs for background processing and return a batch ID.

ParametersJSON Schema
NameRequiredDescriptionDefault
urlsYesPublic URLs to process.
instructionNoShared summary instruction.
force_refreshNoIgnore cached results for every URL in the batch.
summary_qualityNoUse fast for the configured normal model, or pro for the configured strong model. Video links are automatically treated as pro.fast

TDQS

A3.8/5.0
Behavior3/5

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

Annotations (readOnlyHint=false, destructiveHint=false, idempotentHint=false) provide basic behavioral clues. Description adds 'background processing' but lacks details on async behavior, rate limits, or side effects. Minimal value beyond annotations.

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, front-loaded with key action and output. No wasted words.

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 output schema, description should explain return value (batch ID format) and async workflow. Missing guidance on how to retrieve results or check status, making it incomplete for effective use.

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%, so baseline is 3. Description does not add meaning beyond schema descriptions; it merely restates the purpose.

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 verb (submit), resource (multiple public URLs), action (background processing), and output (batch ID). It distinguishes from sibling tools like submit_link (single link) and submit_document.

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?

Description implies batch use via 'multiple public URLs' but does not explicitly mention when not to use or provide alternatives. It is clear enough for its intended use.

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

easysourceflow_submit_documentA

Submit local text or Markdown content for summarization without letting the service read arbitrary disk paths.

ParametersJSON Schema
NameRequiredDescriptionDefault
titleNoDocument title or filename.
contentYesPlain text or Markdown content.
instructionNoUser summary instruction.
force_refreshNoIgnore cached results.
summary_qualityNoUse fast for the configured normal model, or pro for the configured strong model. Video links are automatically treated as pro.fast

TDQS

A3.9/5.0
Behavior4/5

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

Annotations already declare readOnlyHint=false and openWorldHint=true. The description adds value by specifying that the tool avoids reading arbitrary disk paths, which is a security-relevant behavioral detail 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.

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 purpose, containing no superfluous words 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?

Given the tool has 5 parameters and no output schema, the description is adequate but incomplete. It does not explain the outcome of submission (e.g., returns a job ID), nor does it hint at workflow steps like result retrieval, which would be helpful given the sibling tools.

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?

Input schema has 100% parameter description coverage. The tool description does not add any additional meaning or context to the parameters beyond what the schema already provides, so a baseline score of 3 is appropriate.

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

Purpose5/5

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

The description clearly states the tool is for submitting local text or Markdown content for summarization, and includes a notable constraint ('without letting the service read arbitrary disk paths') that distinguishes it from siblings like easysourceflow_submit_link.

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 when to use this tool (for local content) but does not explicitly contrast with sibling tools like easysourceflow_submit_link or provide when-not-to-use guidance. Alternatives are not named.

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. Dates show when Glama detected each change.

  1. 16 tool updatesv0.1.0
    • First observedeasysourceflow_backup
    • First observedeasysourceflow_bilibili_cookie_status
    • First observedeasysourceflow_cancel_job
    • First observedeasysourceflow_cleanup
    • First observedeasysourceflow_favorite_result
    • First observedeasysourceflow_get_batch
    • First observedeasysourceflow_get_job
    • First observedeasysourceflow_health_check
    • First observedeasysourceflow_list_recent_jobs
    • First observedeasysourceflow_model_status
    • First observedeasysourceflow_retry_job
    • First observedeasysourceflow_search_outputs
    • First observedeasysourceflow_submit_batch
    • First observedeasysourceflow_submit_document
    • First observedeasysourceflow_submit_link
    • First observedeasysourceflow_summarize_link

TDQS

A3.8/5.0
Disambiguation5/5

Each tool targets a distinct action, with clear separation between URL submission, local document submission, job management, search, and maintenance. The only potential overlap (submit_link vs summarize_link) is resolved by specific usage instructions.

Naming Consistency5/5

All tools follow the consistent pattern 'easysourceflow_verb_noun' in snake_case, making the set predictable and easy for an agent to navigate.

Tool Count4/5

With 16 tools, the count is slightly above the typical well-scoped range but still reasonable given the variety of features: job lifecycle, batch processing, favorites, search, and maintenance.

Completeness4/5

The tool surface covers core workflows (submission, status, retry, cancel, search, favorites) and maintenance. Minor gaps include lack of a dedicated favorites list tool, but search_outputs provides some coverage.

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/john-ops-lab/EasySourceFlow'

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