Skip to main content
Glama
Wang-JQ77

deepseek-litresearch

by Wang-JQ77

DSH LitResearch

科学文献深度调研 MCP Server + DeepSeek Harness(DSH)插件。 跨 Europe PMC、Semantic Scholar、PubMed、OpenAlex、arXiv、Crossref 等 8+ 学术数据源递归检索,回答科学问题并产出带引用溯源、带证据等级、带红队审查评分、带成本明细的深度调研报告。

English: a DeepResearch-style MCP server & DSH plugin for scientific literature — recursive multi-source search, outline-first two-phase workflow, citation verification, red-team review, and cited Markdown/HTML reports (zh/en).


功能特性

能力

说明

两阶段工作流

plan_research 先生成大纲(子问题 + 检索词)→ 必须经用户确认(含「8 秒内确认自动拦截」防跳过门禁)→ execute_research 执行

递归深度调研

规划 → 并行检索 → 粗排 → 提炼 → 反思补充检索 → 综合成稿;breadth(子问题数)× depth(递归层数)可调

引文三级校验

L1 DOI 存在性(Crossref)/ L2 结论-引文一致性 NLI(支持/矛盾/无关/无法核验四分类)/ L3 证据等级

红队对抗审查

规则检查 + LLM 审查 + 五维 rubric 评分(覆盖度/争议/引用有效性/断言克制度/时效性),fail 触发分类化最小修复循环(JSON edits 逐条应用,不全文重写)

奠基文献召回

LLM 列出领域公认奠基文献 → Crossref 题名验证防幻觉 → 补入文献池并强制覆盖

元数据回填

OpenAlex(type 判定综述/原创的权威信号)+ Crossref(DOI/卷期页/期刊)双向补全,429/5xx 指数退避重试

文献池去重

DOI 归一化 + 预印本↔正式版版本合并 + 题名相似度合并(跨来源重复条目)

断点续跑

检索/撰写完成即落盘检查点;任务失败重跑自动跳过已完成阶段,不重复烧 token

交付物双模式

full(正文+审稿附录)/ clean(正文干净稿,红队/概览/校对独立成 <slug>-review.md

行文校对

术语一致性(如 FcγRIIIa/FcγRIIIA 混用)+ 超长句/重复标点/括号引号不配对启发式检测

进度可视化

11 阶段加权进度条(plan→search→…→export)+ 心跳保活 + 阶段级 ETA

任务持久化

SQLite 任务状态机:创建/查询/列表/删除/恢复中断任务

报告输出

Markdown / 自包含 HTML(内嵌 SVG 图表)/ JSON;zh / en 双语;按模型 token 计价的成本明细

可选增强

OA 全文深读 read_paper、引文滚雪球 get_citations、Sci-Hub 兜底、机构 EZProxy / TDM API

质量实测(同一主题「B 细胞发育与抗体 Fc 效应机制」修复前后复跑对比):红队五维评分 67.6/fail → 87.1/pass,其中引用有效性 0/20 → 19.5/20;空号文献表、跨来源重复条目、综述误标等问题在本版本中已修复。


Related MCP server: Paper Pilot

安装

方式一:作为 DSH 插件(聊天框内直接使用,推荐)

前置:Python ≥ 3.10、pip(或 uv)。

git clone https://github.com/Wang-JQ77/dsh-litresearch.git
cd dsh-litresearch
pip install -e .          # 或 uv sync

然后接入 DSH:

  1. 打开 plugin/cordis.patch.yml,把 command / args 改为你本机的解释器与 launcher.py 绝对路径(文件内有注释示例);

  2. plugin/ 目录按 DSH 插件机制挂载(DSH settings 的 plugins 引用该目录,或复制到 DSH 插件目录);

  3. 重启 DSH,聊天框出现 LitResearch 开关即接入成功。

方式二:通用 MCP Client(stdio)

pipx install dsh-litresearch      # 或 uv tool install dsh-litresearch
# 在任意支持 MCP 的客户端中注册 stdio 命令:dsh-litresearch

方式三:源码运行(开发)

git clone https://github.com/Wang-JQ77/dsh-litresearch.git
cd dsh-litresearch
uv sync                                 # 或 pip install -e .
cp .env.example .env                    # 填入 LLM Key
uv run dsh-litresearch             # stdio 模式启动

配置

LLM 使用任意 OpenAI 兼容端点(DeepSeek / 智谱 BigModel / OpenRouter / 自建网关均可)。两处配置,优先级:~/.dsh-litresearch/settings.json > 仓库根 .env > 默认值。

.env(单 Provider,最简)

DEEPSEEK_API_KEY=你的Key
DEEPSEEK_BASE_URL=https://api.deepseek.com        # 任意 OpenAI 兼容端点
DEEPSEEK_MODEL=deepseek-chat
S2_API_KEY=                                       # Semantic Scholar(强烈建议,保底 1 RPS)
NCBI_API_KEY=                                     # PubMed
OPENALEX_MAILTO=you@example.com                   # OpenAlex/Crossref polite pool(强烈建议)
CROSSREF_MAILTO=you@example.com

settings.json(多 Provider 回退链 + 质量开关)

{
  "llm": { "providers": [ {"api_key": "...", "model": "...", "base_url": "..."} ] },
  "quality": {
    "metadata_enrichment": true,
    "landmark_recall": true,
    "proofread": true,
    "claim_validation": true,
    "controversy_detection": true,
    "critic_repair_rounds": 1
  },
  "report": { "language": "zh", "format": "markdown", "deliverable_style": "full" }
}
  • deliverable_style: full(正文+审稿附录,默认)| clean(正文干净稿 + 独立 -review.md 审稿文件)

  • Sci-Hub / 机构 EZProxy / Elsevier·Wiley TDM 等可选能力:插件内调用 get_config_guide() 查看申请与配置方式

  • 报告落盘默认 ~/.dsh-litresearch/reports/,可用 DRS_REPORT_DIR / DRS_DB_PATH 重定向


MCP 工具一览

工具

说明

deep_research(question, breadth, depth, max_papers, sources, format, critique, track, language)

深度调研(直达模式),返回带引用报告 + report_paths + 成本摘要(异步 + 进度通知)

plan_research(question, breadth, language, track)

两阶段第一步:生成大纲,返回 job_id不执行检索

execute_research(job_id, plan_override, depth, ..., confirm)

两阶段第二步:确认/修改大纲后执行;confirm 门禁见下

search_literature(query, sources, limit, mode)

跨源检索,返回归一化元数据 + 摘要

read_paper(doi/arxiv_id/pmid/pmcid, max_chunks)

OA 全文获取并分块返回

get_citations(paper_id, direction, limit)

引文扩展(滚雪球)

create/get/list/delete/recover_research_jobs

任务持久化状态机(含中断恢复)

get_settings / set_settings / get_config_guide / get_status

插件设置、数据源健康检查

两阶段工作流(大纲先行确认)

① plan_research(question="……", breadth=5)
   → 返回 job_id + 大纲 + awaiting_user_confirmation=true
     (agent_instruction 要求把大纲完整展示给用户并停止)
② 用户确认/修改后:
   execute_research(job_id, confirm=true)                 # 原样确认
   execute_research(job_id, plan_override=[修改后大纲])    # 修改即确认
   ※ 大纲生成后 8 秒内的 confirm 会被自动拦截(防 agent 跳过用户直接执行),
     用户确认后再调用即可正常放行

数据源(8+)

Europe PMC · Semantic Scholar · PubMed · OpenAlex · arXiv · Crossref · bioRxiv/medRxiv(经 Europe PMC)· Google Scholar(可选 SerpAPI)。全文获取链:Europe PMC fullTextXML → arXiv → Unpaywall →(可选)Sci-Hub / 机构 EZProxy / TDM API。


致谢与参考项目

本项目的「规划 → 并行检索 → 提炼 → 反思递归补充 → 综合成稿」深度调研范式与引用溯源报告形态,在设计时参考了以下优秀开源项目(本项目为独立实现,非其分支):

同时依赖并感谢 rapidfuzzscikit-learnnetworkxhttpxpydantic 等开源库。


法律与合规

  • 全文获取默认仅使用 OA 渠道;Sci-Hub / 机构订阅功能默认关闭,启用需显式确认并遵守当地法律法规与机构政策。

  • 报告由 LLM 生成,引用与结论请以所附 DOI 原文为准;L1–L3 校验降低但不消除错误引用风险。

License

MIT

Available Tools

18 tools
cancel_research_jobA

取消一个正在后台运行的任务(在最近的阶段边界干净退出)。

Args: job_id: 正在运行的任务 id。

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

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 carries the behavior disclosure burden. It does add meaningful behavior by stating the cancellation is a clean exit at the nearest stage boundary, but it does not mention side effects, whether the cancellation is reversible, what happens to partial results, or whether the call is synchronous.

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 extremely concise, front-loads the primary action, and adds only one useful parenthetical behavioral detail. The Args list is minimal and directly matches the single schema parameter with no wasted words.

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 single-parameter tool with no annotations and no output schema, the description covers the core purpose and parameter adequately. However, it omits post-cancellation state, return behavior, and any guidance comparing cancellation to deleting or recovering jobs, leaving some ambiguity for an agent.

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?

The schema has zero description coverage, so the parameter documentation is carried entirely by the Args section. The description defines job_id as 'the id of the running task', which adds a small amount of context beyond the schema's bare title 'Job Id', but it largely restates what the parameter is.

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 action 'cancel' and the resource 'a task running in the background', with a useful qualifier about cleanly exiting at the nearest stage boundary. It is specific enough to be distinguished from listing, creating, or deleting jobs, though it does not explicitly contrast with delete_research_job.

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

Usage Guidelines4/5

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

The description provides a clear condition for use: cancel a task that is currently running in the background. It does not explicitly discuss alternatives or exclusions, but the running-task condition is an explicit contextual signal for when this tool is appropriate.

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

create_research_jobA

创建深度调研任务(M10 持久化),返回 job_id,不立即执行。

Args: question: 科学问题。 breadth: 子问题数(1-6,默认取设置里的广度)。 depth: 检索深度(1-3,默认取设置里的深度)。 max_papers: 文献池上限(默认 50)。 sources: 数据源列表,默认全部。 format: 报告导出格式(markdown | html | both | json)。 critique: 是否启用红队对抗审查(默认 True)。 language: 报告语言(M11),zh | en(默认 zh)。

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo
formatNomarkdown
breadthNo
sourcesNo
critiqueNo
languageNozh
questionYes
max_papersNo

TDQS

A4.3/5.0
Behavior4/5

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

由於沒有 annotations,描述必須自行承擔行為揭露。它清楚說明任務會持久化、回傳 job_id、且不會立即執行,這些都是讓智能體避免誤以為呼叫後就同步得到研究成果的關鍵行為。雖然未談權限或副作用,但對建立任務類工具已足较誠實。

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

Conciseness5/5

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

開頭一句話載明核心功能,隨後用精簡清單列出全部參數語意,沒有冗句或重複 schema 已有資訊。每個條目都有資訊價值,適合 LLM 快速掃讀。

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?

對一個 8 參數、無輸出 schema、無 annotations 的非同步建立工具而言,描述已覆蓋呼叫所需的主要語意與回傳值。但「sources 預設全部」未列舉實際可用來源,也未明確說後續可透過 run_research_job 執行已建立的 job,稍有缺漏。

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

Parameters5/5

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

Schema 參數描述覆蓋率為 0%,描述完全補償了這項缺口。它為每個參數賦予語意和範圍:breadth 1-6、depth 1-3、max_papers 50、format 的枚舉值、critique 的紅隊對抗含義、langauge zh/en,question 也定義為科學問題。這比 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?

描述開頭就明確說出核心動作「创建深度调研任务」,指出資源是研究任務,並補充關鍵行為:M10 持久化、返回 job_id、不立即執行。這能與 run_research_job、execute_research、deep_research 等立即執行類兄弟工具明確區分。

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?

「不立即執行」暗示此工具適合需要先建立任務、稍後再跑的場景,與執行型兄弟工具形成隱含對比。但描述沒有明確寫出「需要立即執行時請改用 run_research_job/execute_research」,也沒有列舉不適用情境,因此只到隱含使用指引的層級。

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

deep_researchA

对科学问题进行深度调研,返回带引用的 Markdown 报告(大纲先行)。

内部执行 规划→并行检索→粗排→提炼→反思→综合 的递归循环。

大纲先行(默认):先生成调研大纲并返回(status=planned + job_id + plan), 供用户确认或修改;确认后调用 execute_research(job_id, plan_override=...) 继续执行。 传 confirm_outline=false 或关闭设置 litresearch.outline_first,则一次调用跑完 完整流水线(直达模式)。执行期间进度写入 progress/.json,前端展示进度条。

Args: question: 科学问题(如 "GLP-1 receptor agonists in neurodegenerative diseases")。 breadth: 规划阶段拆分的子问题数(1-6,默认取设置里的广度)。 depth: 递归检索深度(1-3,默认取设置里的深度)。 max_papers: 文献池规模上限(默认 50)。 sources: 数据源列表,默认全部可用源。 format: 报告导出格式,markdown | html | both | json(默认 markdown)。 导出文件写入 DRS_REPORT_DIR,返回 report_paths + cost 成本摘要。 critique: 是否启用红队对抗审查(M8,默认 True;规则审查 + LLM 可用时 LLM 审查)。 track: 是否持久化任务到 SQLite(M10,默认 True),返回 job_id 供后续查询。 language: 报告语言(M11),zh | en(默认 zh)。 confirm_outline: 大纲先行开关(默认取设置 litresearch.outline_first)。 true=只生成大纲返回等确认;false=一次跑完直达报告。

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo
trackNo
formatNomarkdown
breadthNo
sourcesNo
critiqueNo
languageNozh
questionYes
max_papersNo
confirm_outlineNo

TDQS

A5/5.0
Behavior5/5

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

无 annotations,但描述完整披露了内部流水线、大纲先行/直达模式、进度文件写入、导出文件目录、SQLite 持久化、cost 摘要和红队审查默认开启等行为。对调用者可预见的副作用和状态变化说明充分。

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?

开篇用一句话概括目的,内部流程、执行模式、参数列表分层清晰,信息密度高。对 10 参数、双执行路径的复杂工具来说,长度合理且没有冗余内容。

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?

无 output schema,但描述已覆盖返回值(status=planned + job_id + plan、report_paths + cost)、进度文件、导出文件、SQLite 跟踪及后续 execute_research 调用方式。对高复杂度工具而言上下文完整,足以让 agent 正确选择和调用。

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

Parameters5/5

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

schema_description_coverage 为 0%,但描述对全部 10 个参数逐一补充了语义、范围、默认值和行为影响,如 breadth 1-6、depth 1-3、max_papers 50、format 枚举及 confirm_outline 开关。这远超 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?

描述明确了核心用途:对科学问题进行深度调研并返回带引用的 Markdown 报告。通过'大纲先行'、直达模式和调用 execute_research 的说明,有效将 deep_research 与 plan_research、execute_research 等兄弟工具区分开。

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?

清楚说明了两种使用路径:默认生成大纲等待用户确认后用 execute_research 继续,或设置 confirm_outline=false 一次跑完。还说明进度文件与 job_id 的用途,对何时调用本工具、何时转交 execute_research 给出了明确指引。

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

delete_research_jobA

删除任务(M10)。

同时删除该任务的进度文件(pill)——否则「等待确认大纲」等前端标签 会在任务删除后永久残留(2026-08-29 缺口修复)。

Args: job_id: 任务 id。

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

TDQS

A3.5/5.0
Behavior4/5

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

在没有任何 annotations 的情况下,描述额外披露了关键副作用——删除任务时会同时删除进度文件,否则前端标签会永久残留;还注明这是 2026-08-29 的缺口修复,有助于理解行为原因。但未说明删除是否不可恢复,也未提权限要求,略有保留。

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

Conciseness5/5

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

描述简短且分三段:先讲主要功能,再讲副作用与原因,最后列参数。没有冗余信息,结构清晰、信息密度高。

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

Completeness3/5

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

由于没有 annotations 和 output schema,描述承担全部上下文责任。它涵盖了删除动作、副作用和参数,但未涉及删除的前提状态(如运行中的任务是否可删)、与 cancel_research_job 的选择条件,以及调用后的返回结果。对于一个删除工具来说基本可用,但仍有明显信息缺口。

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 只有一个必需参数 job_id,类型为 string;描述在 Args 中说明 job_id 为任务 id,与 schema 标题 Job Id 基本重复,没有补充格式、示例或来源。虽然单一参数本身简单,重复解释也算提供基本语义,但价值有限。

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?

描述使用明确的动词「删除」和资源「任务」表达操作目标,并说明删除任务的同时会删除进度文件(pill),因此能清楚告知该工具的作用。但没有明确与兄弟工具 cancel_research_job 做区分,所以未达到 5 分。

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?

描述未说明何时应该使用删除而非取消任务,也没有提及前置条件或替代工具。兄弟工具中存在 cancel_research_job,但描述没有给出在什么状态下应选择删除、什么状态下应选择取消,因此缺少使用时机指引。

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

execute_researchA

第二步:按已确认的大纲执行深度调研(plan_research 之后调用)。

确认门禁(需求 2):大纲生成后必须经用户确认/修改才能执行—— 首次调用(confirm=false 且未提供 plan_override)只返回大纲并不执行, 状态保持 planned;用户确认后传 confirm=true,或直接以修改后的 plan_override 调用(修改即确认),任务才进入后台执行。

执行为异步(2026-08-29 修复):立即返回 job_id(status=running), 流水线在独立线程运行,客户端超时/断开不影响任务;用 get_research_job(job_id) 轮询进度与结果,cancel_research_job 可取消。

Args: job_id: plan_research 返回的 job_id。 plan_override: 用户修改后的大纲([{question, queries}]),覆盖原大纲执行; 不传则按 plan_research 生成的原大纲执行。提供它即视为已确认。 depth: 递归检索深度(1-3),覆盖 plan 阶段参数并回写任务记录。 max_papers: 文献池规模上限,覆盖 plan 阶段参数并回写任务记录。 sources: 数据源列表,覆盖 plan 阶段参数并回写任务记录。 format: 报告导出格式(markdown | html | both | json),覆盖并回写。 critique: 红队审查开关;None 时沿用任务存储的参数(不再默认 True 覆盖)。 language: 报告语言 zh | en;None 时沿用任务存储的参数。 confirm: 用户已确认大纲(首次调用必须为 true 或提供 plan_override)。 注意(2026-08-30 门禁强化):outline_confirm_strict 开启时,大纲生成后 outline_confirm_min_seconds 秒内的执行请求会被退回等待确认—— agent 必须先把大纲展示给用户并等待回复,不得跳过确认步骤。

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo
formatNo
job_idYes
confirmNo
sourcesNo
critiqueNo
languageNo
max_papersNo
plan_overrideNo

TDQS

A4.9/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 transparency burden and succeeds: it discloses async execution, first-call no-op behavior, plan_override implying confirmation, the strict confirmation gate, None-value fallback semantics, and parameter write-back behavior.

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 content is front-loaded and structured, with purpose first, then workflow gate, async behavior, and parameter list. Minor deduction for dated change-log notes such as '2026-08-29 修复' and '2026-08-30 门禁强化', which add maintenance noise rather than essential procedural meaning.

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

Completeness5/5

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

Given the tool's complexity, 9 parameters, and lack of output schema, the description provides everything needed to invoke it correctly: preconditions, confirmation behavior, async semantics, cancellation/polling paths, and parameter override effects.

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

Parameters5/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 the parameters. It covers all 9 parameters, including type domains (depth 1-3, format enum, language zh/en), override semantics, and confirmation logic.

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 opens with '第二步:按已确认的大纲执行深度调研(plan_research 之后调用)', giving a specific action, object, and workflow position. This clearly distinguishes the tool from planning and follow-up 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?

It states explicitly when to invoke the tool (after plan_research), what the confirmation precondition is, and exactly what to use for follow-up (get_research_job for polling, cancel_research_job for cancellation). The workflow guidance is unambiguous.

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

get_citationsA

引文扩展(滚雪球):返回某文献的被引(前向)或引用(后向)文献。

Args: paper_id: Semantic Scholar paper id(如 "s2:xxx" 或裸 id),或 "DOI:10.xxx"。 direction: "citations"(被引,前向)/ "references"(引用,后向)。 limit: 返回条数上限。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
paper_idYes
directionNocitations

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations, the description carries the transparency burden. It discloses direction semantics ('citations' is forward, 'references' is backward), accepted paper_id formats including DOI, and that limit is an upper bound. It does not describe output format or error behavior, but the core behavioral traits are covered.

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

Conciseness5/5

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

The description is compact, front-loaded with the core benefit, and the Args block is structured without redundancy. Every line contributes useful information.

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 tool with no annotations and no output schema, this description explains purpose, parameters, ID formats, and direction choices adequately. It stops short of specifying the exact return structure, which would round out the picture, but the tool is still safely invocable.

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

Parameters5/5

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

Since the schema has 0% description coverage, the parameter explanations are essential and are fully provided: paper_id formats, direction values with mappings, and limit semantics. This adds clear meaning the raw schema lacks.

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 a specific operation (citation snowballing) and the resource (a paper's cited/forward or citing/backward literature). It clearly distinguishes itself from sibling tools like read_paper and search_literature by framing the behavior as citation expansion.

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

Usage Guidelines4/5

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

The phrase '引文扩展(滚雪球)' gives a clear usage context: use this tool when you want to expand from a known paper via its citation graph. It does not explicitly list excluded cases or name alternatives, but the intended use case is evident.

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

get_config_guideA

查看插件配置说明(Sci-Hub 开启与镜像、EZProxy 两种模式、TDM API 申请入口)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.3/5.0
Behavior4/5

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

没有注解,描述承担全部披露责任。'查看'暗示只读操作,且列出配置说明的具体范围(Sci-Hub、EZProxy、TDM API),让代理了解返回值内容。未明确说明不修改任何设置,但动词稳定性足够。

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

Conciseness5/5

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

单一、精炼的句子,动词前置,内容紧凑包含范围说明,无任何冗余信息使代理快速理解。

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

Completeness5/5

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

零参数、无输出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?

该工具无参数,描述无需补充参数语义。按照准则无参数时基线为4,且描述与空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?

描述使用明确的动词'查看'和资源'插件配置说明',并列出具体涵盖的主题(Sci-Hub、EZProxy、TDM API),区别于 get_settings 等实际配置工具。清晰标示了此工具是查看说明而非修改配置。

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?

虽然没有显式说明何时使用或与其他工具对比,但'查看插件配置说明'自然暗示使用场景。缺少对 get_settings/set_settings 等替代工具的排除说明,但零参数简单工具使上下文基本明确。

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

get_research_jobA

查询任务状态与结果(M10)。

Args: job_id: 任务 id(create_research_job / deep_research / plan_research 返回的 job_id)。

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations provided, the description carries the burden of disclosing behavior. It does state the tool is a query ('查询'), implying a read-only operation, and says it returns status and results. However, it does not disclose potential side effects, whether the query blocks, polling behavior, or error/return semantics. The 'M10' label is cryptic and adds no behavioral value.

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 extremely concise: two short sentences, with the purpose stated up front and the parameter explanation immediately following. There is no redundant content. The only minor blemish is the unexplained 'M10', but it does not meaningfully hurt comprehension.

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 one-parameter helper, the description covers the core need: what the tool does and where the parameter comes from. However, with no annotations and no output schema, it does not describe the response format, whether results are returned inline, or how this differs from the sibling get_status. That leaves some ambiguity for an agent deciding between tools.

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 input schema only defines job_id as a bare string with no description. The description adds meaningful semantics by specifying that the job_id is the one returned by create_research_job, deep_research, or plan_research. Given 0% schema description coverage, this is valuable compensation.

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

Purpose4/5

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

The description clearly states the tool's purpose: querying job status and results ('查询任务状态与结果'), using a specific resource (a research job). This is more specific than the name alone. However, it does not differentiate from the sibling tool 'get_status', which may overlap in function, so it stops short of a 5.

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 the tool by explaining that the job_id comes from create_research_job / deep_research / plan_research jobs. That gives useful context about which jobs this tool applies to. However, it does not provide explicit guidance on when to choose this over siblings like get_status, list_research_jobs, or cancel_research_job.

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

get_settingsA

查看当前插件设置(Sci-Hub / EZProxy / TDM API / 报告语言等)。

返回 settings.json、环境变量与默认值合并后的生效配置。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavior disclosure. It adds valuable context by explaining that the returned configuration merges settings.json, environment variables, and defaults. However, it does not disclose potential staleness, error behavior, or whether the plugin must be initialized first, leaving some behavioral ambiguity.

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

Conciseness5/5

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

The description is two concise sentences: the first states the purpose and target categories, the second defines the return value semantics. Every word earns its place, and there is no redundant or filler content.

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

Completeness4/5

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

For a zero-parameter, read-only tool with no output schema, the description covers the essential call contract: what it retrieves and the structure of the returned configuration. It could tie usage to set_settings or warn about precedence, but those are more usage-related than completeness gaps.

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 input schema has zero parameters, so the baseline is 4. There is no parameter information to provide, and the description does not need to explain any. This is appropriate for a parameterless getter.

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

Purpose4/5

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

The description clearly states the tool's function: viewing current plugin settings, enumerating specific categories (Sci-Hub / EZProxy / TDM API / report language). It identifies the resource precisely and explains the return value is the effective merged configuration. However, it does not explicitly differentiate it from sibling tools like get_config_guide or set_settings, relying on the name to imply read vs. write.

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 given on when to use this tool versus alternatives. It does not mention that this is the read companion to set_settings, nor does it advise using it before modifying settings. The agent must infer usage context entirely from the name and purpose, which is a clear gap.

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

get_statusA

报告各数据源配置与健康状态(含 Sci-Hub / 机构订阅启停状态、LLM Provider 探活)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.9/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 reveals what entities are covered (data sources, subscriptions, LLM providers) and implies a liveness check, but it does not state whether the operation is read-only, whether the liveness probe triggers external network calls or quota usage, or how the status is obtained.

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, dense sentence that front-loads the main purpose and then adds specific coverage details. There is no redundancy or filler.

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 parameterless status tool, the scope is reasonably clear, but with no output schema the description does not explain what the returned status report contains or how an agent should interpret it. The lack of annotations also leaves side effects and read-only behavior 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?

The tool has zero parameters, so the baseline is 4. The description does not need to explain parameter meaning, and there is no parameter-level gap to compensate for.

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 reports data source configuration and health status, including Sci-Hub/institutional subscription enabled/disabled state and LLM provider liveness. This goes well beyond the tautological 'get status' and distinguishes it from siblings like get_settings or test_fulltext.

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 as a health/status diagnostic, but it gives no explicit guidance on when to prefer this tool over sibling tools such as get_settings or test_fulltext. There are no exclusions, alternatives, or decision criteria mentioned.

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

list_research_jobsA

列出任务(M10),可按状态过滤。

Args: status: 过滤状态(pending | planned | running | completed | failed | cancelled),None=全部。 limit: 返回条数上限(默认 50)。

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
statusNo

TDQS

A3.8/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 transparency burden. It discloses the filtering behavior, valid status values, None=all semantics, and the limit cap, which is useful. It does not mention return format, ordering, pagination, or whether the list is user-scoped, but for a list operation this is adequate.

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

Conciseness5/5

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

The description is compact and front-loaded, with a clear one-line summary followed by a concise Args block. No filler or redundancy; every sentence carries information.

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

Completeness3/5

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

For a simple two-parameter list tool, the params are fully described and the tool can be invoked correctly. However, with no output schema, the description does not explain what the returned jobs look like, ordering, pagination, or the exact scope of 'tasks (M10)', leaving minor downstream uncertainty.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates: it explains status's allowed values and None=all behavior, and clarifies that limit is an upper bound with a default of 50. This adds meaningful semantics beyond the bare schema types and defaults.

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 ('任务'/research jobs), and mentions status filtering, making its purpose clear. It is naturally distinguished from sibling mutations like cancel/delete/run, but does not explicitly contrast with get_research_job or describe scope, so it falls just short of full sibling differentiation.

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

Usage Guidelines3/5

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

The description implies use when you need to list or filter research jobs, and the status values give concrete filtering context. However, it provides no explicit when-to-use/when-not-to-use guidance or alternatives among the many job-management siblings.

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

plan_researchA

第一步:为科学问题生成调研大纲(子问题 + 检索词),不执行检索。

返回 job_id 与大纲,供用户确认或修改。确认后调用 execute_research(job_id, ...) 执行。

Args: question: 科学问题。 breadth: 规划阶段拆分的子问题数(1-6,默认取设置里的广度)。 language: 大纲语言,zh | en(默认 zh)。 track: 是否持久化任务到 SQLite(默认 True)。 job_id: 可选——把生成的大纲挂到这个已存在任务上(如 create_research_job 或 recover_research_jobs 恢复的任务),不再新建任务。

ParametersJSON Schema
NameRequiredDescriptionDefault
trackNo
job_idNo
breadthNo
languageNozh
questionYes

TDQS

A4.8/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and does so well: it states that no search is executed, that it returns an outline and job_id, that track controls SQLite persistence, and that providing job_id avoids creating a new task. These are exactly the side effects an agent needs to know.

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

Conciseness5/5

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

The description is compact and well organized: it opens with the purpose and key exclusion, then the workflow, then a clean Args block. Every sentence contributes information without redundancy.

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 5-parameter tool with no annotations and no output schema, the description covers purpose, workflow, all parameters, persistence behavior, and task attachment. Nothing essential is missing for an agent to select and invoke this tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, yet the description documents every parameter: question, breadth with range 1-6 and default behavior, language with zh/en values, track with default true, and job_id with its attach-to-existing-task semantics. This fully compensates for the empty schema descriptions.

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

Purpose5/5

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

The description states a specific verb and resource: '生成调研大纲' and explicitly says '不执行检索'. It clearly differentiates this planning tool from execute_research, making its purpose unambiguous.

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

Usage Guidelines4/5

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

The description provides an explicit workflow: first generate the outline, have the user confirm or modify it, then call execute_research(job_id, ...). It also explains when to use job_id with create_research_job or recover_research_jobs. It does not enumerate all alternatives, so it stops just 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.

read_paperA

获取文献全文并分块返回,供深度阅读。

至少提供一个标识符。全文来源优先级:Europe PMC fullTextXML → arXiv ar5iv → Unpaywall PDF。

Args: doi: 数字对象标识符(如 "10.1007/s12035-026-06090-6")。 arxiv_id: arXiv 编号(如 "2401.12345")。 pmid: PubMed ID。 pmcid: PubMed Central ID(如 "PMC1234567")。 max_chunks: 最多返回的分块数。

ParametersJSON Schema
NameRequiredDescriptionDefault
doiNo
pmidNo
pmcidNo
arxiv_idNo
max_chunksNo

TDQS

A4.1/5.0
Behavior4/5

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

With no annotations, the description takes on the disclosure burden. It reveals useful behavioral traits: chunked return, source fallback priority, and the need for at least one identifier. It does not cover errors, concurrency limits, or exact output format, but the core behavior is transparent.

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

Conciseness5/5

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

The description is compact and well-structured: purpose in the first line, then source precedence, then an Args list. Every sentence contributes useful information without 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 tool with five optional-looking parameters and no output schema, the description covers identifiers, source precedence, and chunk control. It does not address edge cases like conflicting identifiers or error behavior, but the essential call contract is present.

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

Parameters5/5

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

Schema description coverage is 0%, but the description compensates fully by explaining every parameter: doi, arxiv_id, pmid, pmcid, and max_chunks. It also gives realistic examples for identifiers, making parameter usage unambiguous.

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 verb (获取/resad) and resource (paper full text, chunked), and the purpose of deep reading. It does not explicitly name sibling tools it differs from, so it stops just short of full differentiation.

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 gives a usable precondition: at least one identifier must be provided. It also lists the source priority order, which helps the agent reason about behavior. However, it does not explicitly say when to prefer this over siblings like search_literature or test_fulltext.

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

recover_research_jobsA

恢复中断任务(M10):进程崩溃遗留的 running 任务标记为 pending 可重跑。

幂等:无 running 任务时返回空列表。本进程内仍在后台线程运行的任务 不会被误标(recover 只处理真正失去执行者的 running 任务)。

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A4.6/5.0
Behavior5/5

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

No annotations are provided, so the description carries full responsibility for behavioral disclosure. It explicitly states idempotency, the empty-list result when there is nothing to recover, and a subtle safety property: tasks running in background threads of the current process will not be mis-marked. This is strong transparency for a mutation-style tool.

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

Conciseness5/5

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

The description is very compact: two sentences, with the core purpose first and the edge-case/idempotency behavior second. There is no filler or redundant restating of the tool name.

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 maintenance tool, the description covers when to run it, what side effects it performs, and its idempotent behavior. The only minor gap is that it does not describe the return value on success, but there is no output schema and the side effect is fully specified.

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

Parameters4/5

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

The tool has zero parameters and the schema confirms this with 100% coverage. With no parameters to document, the description does not need to add parameter-level semantics, so the baseline 4 applies.

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

Purpose5/5

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

The description states a specific action (recover interrupted research jobs), a concrete state transition (running tasks left by a crash are marked as pending), and implies a re-run capability. This clearly distinguishes it from sibling tools like cancel_research_job or delete_research_job.

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

Usage Guidelines4/5

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

The description clearly implies when to use the tool: after a process crash or when running tasks have lost their executor. It does not explicitly name alternatives or say when not to use it, but the recovery use case is specific enough to guide tool selection.

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

run_research_jobA

重跑/启动一个已存在任务(pending / planned / failed)。

适用场景(M10 生命周期补全):create_research_job 创建的任务、 recover_research_jobs 恢复的僵尸任务、失败后按原参数重试的任务。

  • 任务已有大纲 → 视为用户确认,按存储参数后台执行(outline_confirm_strict 开启时,大纲刚生成时限窗口内的重跑会被退回等待确认);

  • 任务无大纲 → 返回提示:先 plan_research 生成大纲并确认(需求 2: 大纲必须经用户确认/修改后才能执行)。

执行为异步:立即返回,用 get_research_job(job_id) 轮询。

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes

TDQS

A4.9/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It states that execution is asynchronous, that the call returns immediately, that stored parameters are used, that an outline acts as user confirmation, and that outline_confirm_strict may reject reruns within a time window. This is detailed and actionable.

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 front-loads the core action, then adds scenario, condition, and async behavior in a compact structured format. Every sentence contributes operational value, and there is no redundant restatement of the schema or annotations.

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 one-parameter async lifecycle tool with no output schema, the description covers the action, applicable statuses, exclusions, confirmation behavior, and the polling path. An agent has everything needed to invoke it correctly and know what to expect afterward.

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 description coverage is 0%, but the single required parameter job_id is meaningfully contextualized as the identifier of the existing job to rerun and as the key passed to get_research_job for polling. It does not provide a dedicated parameter definition or format details, but the meaning is recoverable from the prose.

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

Purpose5/5

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

The description clearly states a specific verb and resource: rerun/start an existing research job in pending, planned, or failed status. It also names sibling lifecycle tools such as create_research_job, recover_research_jobs, and plan_research, making the tool's role in the lifecycle unambiguous.

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 enumerates when to use the tool: jobs created by create_research_job, zombie jobs recovered by recover_research_jobs, and failed jobs retried with original parameters. It also gives a clear when-not case: jobs without an outline should first go through plan_research, and polling should be done via get_research_job.

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

search_literatureA

跨源检索科学文献,返回归一化后的元数据 + 摘要。

Args: query: 检索关键词(如 "GLP-1 receptor agonists neuroprotection")。 sources: 要查询的数据源,默认全部:["europepmc", "semanticscholar", "arxiv"]。 limit: 每个源最多返回条数。 mode: "fast"(元数据+摘要)或 "deep"(含全文,M2 里程碑实现)。

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNofast
limitNo
queryYes
sourcesNo

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 disclose core behavior: it searches multiple sources, normalizes metadata, returns metadata plus abstracts, and offers a deep mode with full text. It does not mention rate limits, errors, or explicit read-only confirmation, but for a search tool the stated output and mode behavior are substantive.

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 purpose statement is front-loaded in one sentence, followed by a compact Args block. Every line adds information about a parameter or behavior, and there is no redundant 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 four-parameter search tool with no output schema and no annotations, the description covers inputs, defaults, output content, and mode behavior. It is slightly incomplete in not relating this tool to sibling read/deep-research workflows, but it gives an agent enough to invoke it correctly in isolation.

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

Parameters5/5

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

Schema description coverage is 0%, and the description compensates fully: query gets an example, sources are enumerated with a default, limit is defined as per-source maximum, and mode is explained semantically. This adds real meaning beyond the bare JSON Schema property names and defaults.

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 opens with a specific verb and resource ('跨源检索科学文献') and states the return value (normalized metadata + abstracts). It is clearly about cross-source search, but it does not explicitly compare itself with sibling tools such as read_paper or deep_research, so it stops short of full sibling differentiation.

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

Usage Guidelines2/5

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

The Args block explains how to issue a query, but there is no guidance on when to choose search_literature instead of a sibling like read_paper, get_citations, or deep_research. The mode options distinguish fast vs deep internally but do not route the agent between this tool and alternatives.

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

set_settingsA

修改插件设置并写入 ~/.deepseek-litresearch/settings.json(热生效)。

Args: litresearch_enabled: Deep LitResearch 功能总开关(默认开)。聊天框技能可切换此开关。 breadth: 检索广度(子问题数 1-6),默认 3。 depth: 检索深度(递归层级 1-3),默认 2。 scihub_enabled: 是否启用 Sci-Hub 兜底(默认关闭)。开启需 acknowledge_scihub_risk=true。 scihub_mirrors: 镜像站列表(完整 URL),覆盖默认镜像;可自行添加。 scihub_min_interval: 请求最小间隔(秒)。 scholar_enabled: 是否启用 Google Scholar 增强源(默认关闭)。 scholar_provider: Scholar 接入方式(scraperapi=ScraperAPI HTML 解析 / serpapi=SerpAPI JSON)。 scraperapi_url: ScraperAPI 代理入口 URL(默认 https://api.scraperapi.com)。 scraperapi_key: ScraperAPI Key(按成功响应计费,请确认后启用)。 serpapi_key: SerpAPI Key(原有通道,按次计费)。 ezproxy_base_url: 校园 EZProxy 地址(如 https://ezproxy.your-university.edu)。 ezproxy_username / ezproxy_password: EZProxy 账密(校外访问模式)。 ezproxy_proxy_template: 自研门户网关的代理 URL 模板(可选)。变量: {scheme} {host} {port} {domain_reversed} {path} {query} {url} {encoded_url}。 例(yitlink 路径式): https://gw.univ.edu:8444/https/{port}/{domain_reversed}/yitlink{path} ezproxy_cookies: 门户会话 Cookie(用户从浏览器 DevTools 自行复制, 形如 "CLICKIT_SESSION=...; x-yit-token=...")。插件不会自动采集。 elsevier_api_key / elsevier_insttoken: Elsevier TDM API 凭证。 wiley_tdm_token: Wiley TDM 令牌。 report_language: 报告语言 zh | en。 report_format: 报告格式 markdown | html | both | json。 session_follow: 是否默认跟随当前 DSH 会话的 API/模型(默认 true)。 设 false 关闭跟随,回到 agent-default 层(等价于 session_llm.enabled=false)。 session_provider: 自定义 LLM provider 名(DSH settings.yaml 里的 provider 名, 如 mm-api / just);传空字符串清除自定义、恢复自动跟随。 session_model: 自定义模型 id(如 glm-5.3-flash / claude-opus-5); 传空字符串清除自定义、恢复自动跟随。 session_fallback_provider: 唯一备选 provider 名(DSH settings.yaml 里的 provider 名,如 tokenrhythm)。主 Provider 失败时自动切换到它; 传 "none" 或空串清除备选。2026-08-30 起默认链不再自动扫描全部 provider(会话跟随 + 唯一显式备选)。 session_fallback_model: 备选模型 id;留空用备选 provider 的默认模型。 outline_confirm_strict: 大纲确认门禁强化(默认开):大纲生成后 outline_confirm_min_seconds 秒内的执行请求一律退回等待确认。 outline_confirm_min_seconds: 上述时限秒数(默认 8,0 = 关闭)。 acknowledge_scihub_risk: 开启 Sci-Hub 时须显式确认已知悉法律风险。

ParametersJSON Schema
NameRequiredDescriptionDefault
depthNo
breadthNo
serpapi_keyNo
report_formatNo
session_modelNo
scihub_enabledNo
scihub_mirrorsNo
scraperapi_keyNo
scraperapi_urlNo
session_followNo
ezproxy_cookiesNo
report_languageNo
scholar_enabledNo
wiley_tdm_tokenNo
elsevier_api_keyNo
ezproxy_base_urlNo
ezproxy_passwordNo
ezproxy_usernameNo
scholar_providerNo
session_providerNo
elsevier_insttokenNo
scraperapi_countryNo
litresearch_enabledNo
scihub_min_intervalNo
ezproxy_proxy_templateNo
outline_confirm_strictNo
session_fallback_modelNo
acknowledge_scihub_riskNo
session_fallback_providerNo
outline_confirm_min_secondsNo

TDQS

A4.1/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 of behavioral disclosure. It clearly states the tool writes to ~/.deepseek-litresearch/settings.json and applies changes hot, and it explains important operational details such as defaults, prerequisite flags, and that cookies are not auto-collected. This is well beyond a generic 'updates settings' statement.

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 long but appropriately so for 30 parameters. It front-loads the core purpose first and then uses a clear, scannable list. Some entries, such as session_fallback_provider, are verbose, but the extra context is genuinely useful rather than padding.

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 tool with no annotations, no output schema, and zero schema-level parameter descriptions, this description is nearly complete: it covers defaults, constraints, prerequisites, and side effects. The main gaps are the undocumented scraperapi_country parameter and the lack of any explicit statement about the tool's return value or acknowledgment behavior.

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 description coverage is 0%, and the description compensates strongly by documenting nearly every parameter with defaults, allowed values, and domain-specific meaning (e.g., proxy template variables, fallback behavior, report formats). However, the schema includes scraperapi_country, which is not mentioned anywhere in the description, leaving one parameter undocumented.

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

Purpose5/5

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

The description opens with a specific verb and resource: '修改插件设置' (modify plugin settings) and adds the concrete destination file and hot-reload behavior. This clearly distinguishes it from the sibling get_settings and the research-execution tools.

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

Usage Guidelines3/5

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

The description implies the tool is used whenever plugin settings must be changed, and it documents per-field prerequisites such as acknowledge_scihub_risk. However, it never explicitly says when to use this tool versus alternatives like get_settings, nor does it provide exclusions or caveats about when not to call it.

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

test_fulltextA

实测全文兜底通道可用性(只读探测,不修改任何设置)。

  • scihub: 逐镜像探测 Sci-Hub 首页可达性、延迟与验证页特征,并按 DOI 探测能否解析到论文页。仅诊断连通性;使用 Sci-Hub 前请确认符合当地法律法规。

  • ezproxy: 探测已配置的校园 EZProxy——首页可达 → (账密模式)登录 → 代理 URL 访问 doi.org。未配置时返回配置指引。

ParametersJSON Schema
NameRequiredDescriptionDefault
doiNo10.1038/nature12373
scihubNo
ezproxyNo
timeoutNo

TDQS

A4.2/5.0
Behavior4/5

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

No annotations are provided, so the description carries the full behavioral burden. It discloses that the tool is read-only, does not modify settings, probes multiple Sci-Hub mirrors, may perform EZProxy login, and returns configuration guidance when EZProxy is not configured. It does not describe failure output or timeout behavior, but it is substantially transparent.

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

Conciseness5/5

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

The description is front-loaded with the core intent and safety guarantee, followed by compact scannable bullets. Every line adds operational detail and there is no filler or redundancy.

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

Completeness4/5

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

For a moderately complex diagnostic tool with no output schema and no annotations, the description covers both fallback channels, their probe sequences, legal caution, and unconfigured behavior. It does not describe the exact return shape, but it provides enough context for an agent to select and invoke the tool 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 explains the scihub and ezproxy booleans and mentions DOI usage in prose, but it never defines the timeout parameter or the doi format/default behavior. Partial compensation only.

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 opens with a specific verb and resource: testing the availability of full-text fallback channels, then enumerates the two concrete modes (scihub, ezproxy). This clearly distinguishes it from sibling tools like read_paper or execute_research and is not a tautology.

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

Usage Guidelines4/5

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

The description clearly frames the tool as a read-only diagnostic probe and explicitly says it 'only diagnoses connectivity', which tells an agent when to consider it. It does not explicitly name sibling alternatives or state when not to use it, so it falls short of full alternative-based guidance.

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

TDQS

A3.7/5.0
Disambiguation2/5

Several tools have overlapping boundaries: deep_research, plan_research, execute_research, create_research_job, and run_research_job all serve research initiation/execution with subtle workflow differences. While descriptions are detailed, an agent can easily misselect between these overlapping entry points, especially when deciding between one-shot deep_research and the plan/execute split.

Naming Consistency4/5

Most tools follow a clear verb_noun snake_case pattern such as search_literature, read_paper, list_research_jobs, and set_settings. The exceptions are scihub and ezproxy, which are bare product-style names, and deep_research, which reads more like an adjective_noun phrase than a verb-driven action.

Tool Count3/5

The listed surface exposes around 20 tools, which falls into the heavy range and feels over-scoped for a literature research server. The research-job lifecycle alone accounts for roughly ten tools, several of which duplicate the same conceptual operation.

Completeness4/5

The set provides strong domain coverage: multi-source search, full-text reading, citation chaining, settings management, connectivity diagnostics, and job persistence with CRUD operations. Minor gaps exist, such as no dedicated update endpoint for modifying a saved job, but plan_override and settings tools provide workarounds.

Maintenance

ActivityMaintained
ResponsivenessNo issues

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

  • A
    license
    Not graded
    quality
    C
    maintenance
    Enables iterative deep research by integrating AI agents with search engines, web scraping, and large language models for efficient data gathering and comprehensive reporting.
    8
    323
    MIT
  • A
    license
    B
    quality
    A
    maintenance
    Your AI's research copilot. Searches 6 academic databases, downloads real PDFs, reads them cover to cover, extracts evidence, renders figures, syncs to Zotero.
    16
    12
    MIT
  • A
    license
    Not graded
    quality
    D
    maintenance
    Implements Anthropic's multi-agent research methodology with tools for iterative web search, source quality scoring, citation tracking, and quality-tiered report generation.
    9
    2
    MIT

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/Wang-JQ77/dsh-litresearch'

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