UniArticles MCP Server
Offers capabilities to search papers, list recent papers, retrieve paper metadata, and download PDFs from ArXiv.
Enables access to Elsevier's Scopus and ScienceDirect APIs for academic literature search and retrieval, requiring an Elsevier API key.
Provides experimental search of paper metadata by title from Google Scholar via Paperscraper.
Allows searching for papers from PubMed via the Paperscraper API.
Provides tools for searching documents, retrieving abstract details, author profiles, author search, and API quota checking from the Scopus database.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@UniArticles MCP Serversearch arXiv for recent papers on transformer models"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
UniArticles MCP Server
总览
亿文通(UniArticles)是一个实现了模型上下文协议 (MCP) 的统一学术文献检索服务器。截至 v3.5.0,它把 9 个数据源、29 个工具——Scopus、ScienceDirect、arXiv、PubMed、Crossref、Europe PMC、DOAJ、OpenAIRE、CORE——统一到同一套标准化接口下,供 LLM 客户端(Codex Desktop、Cherry Studio、Claude Desktop 等)调用。
Related MCP server: Research MCP
功能特性
统一接口: 所有数据源使用统一的返回结构。
多源支持: 支持9个不同领域的、包括OA与非OA的数据源查询。
标准化返回: 一致的 JSON 结构 (
ok,source,query,count,items,error)。
当前支持的文献数据源
亿文通将以下 9 个数据源统一到同一套 MCP 接口下,全部返回相同的归一化 JSON 结构,且全部默认启用,共提供 29 个工具。除 arXiv 通过官方 arxiv Python 包封装外,其余每个数据源都是通过 httpx 直连该服务商的官方 REST API。
数据源 | 覆盖范围 | 接入方式 | API Key |
Scopus | Elsevier 精选的摘要与引文数据库,覆盖自然科学、社会科学、艺术与人文。 | Elsevier REST API( | 必需 —— |
ScienceDirect | Elsevier 的同行评审期刊与图书全文平台。 | Elsevier REST API( | 必需 —— |
arXiv | 物理、数学、计算机科学、定量生物、经济学等领域的开放预印本。 | 官方 | 无需 |
PubMed | 美国国立医学图书馆(NCBI)收录的生物医学与生命科学文献。 | NCBI Entrez E-utilities REST API( | 可选 —— |
Crossref | 覆盖所有学科的 DOI 注册元数据。 | Crossref REST API( | 无需 |
Europe PMC | EBI 的生命科学文献聚合库(区别于 NCBI PubMed),含 PMC 全文。 | Europe PMC REST API( | 无需 |
DOAJ | 开放获取期刊目录(Directory of Open Access Journals)中的同行评审文章。 | DOAJ REST API( | 无需 |
OpenAIRE | 欧洲开放科学研究成果聚合库。 | OpenAIRE REST API( | 无需 |
CORE | 汇聚全球仓储与期刊的开放获取论文聚合库;9 个数据源中唯一提供分布统计(年 / 出版社 / 学科等 facet)与机构库画像的源。 | CORE v3 REST API( | 可选 —— |
⚠️ API 密钥说明
本服务器提供的每一个工具、每一个数据源,都可以用您以个人身份申请的 API Key 访问,或者根本不需要 Key——没有任何一项需要机构订阅。 9 个数据源中有 5 个完全不需要 Key,需要 Key 的 4 个也都支持个人免费申请。
密钥 | 用于 | 申请方式 |
| Scopus + ScienceDirect(8 个工具) | 在 Elsevier Developer Portal 注册免费个人账号后创建 API Key。基础级、非商业性质的 Key 即可满足本服务器全部 Elsevier 相关工具,不需要机构订阅,也不需要 Insttoken(已用真实的非商业 Key 逐一实测验证)。Scopus 是 Elsevier 旗下数据库,因此在密钥作用域允许的前提下,同一把 Key 也可用于其他 Elsevier API 服务。 |
| CORE(9 个工具) | 前往 core.ac.uk/services/api#form 申请。可选——不配置也能用,但额度低得多:未认证档为 100 tokens/天、10 次/分钟,且官方不提供 |
| PubMed(4 个工具) | 先在 ncbi.nlm.nih.gov 登录 NCBI 账号,再到 NCBI 账号设置页 申请。可选——不配置也能用;配置后仅将限速从 3 请求/秒提升到 10 请求/秒。 |
完全不需要 API Key 的数据源:arXiv、Crossref、Europe PMC、DOAJ、OpenAIRE。
注意:即使一个 Key 都不配置,服务器仍会注册并暴露全部 29 个工具——只有对需要 Key 的数据源的调用会失败,而且是以清晰的错误信息失败,不会从工具列表中悄悄消失。
安装与使用
方法一:直接集成到 LLM 客户端(推荐)
适用于 Cherry Studio、LM Studio、Claude Desktop、Trae 等。
本项目已发布至 PyPI,您无需下载完整项目源码,直接通过配置即可使用。
由于上述 LLM 客户端通常内置了 Python 和 uv 环境,您无需额外下载,只需在客户端的 MCP 配置文件(如 claude_desktop_config.json)中添加以下内容即可:
{
"mcpServers": {
"uniarticles-mcp-server": {
"command": "uvx",
"args": [
"--refresh",
"uniarticles-mcp"
],
"env": {
"ELSEVIER_API_KEY": "your_elsevier_api_key_here",
"NCBI_API_KEY": "your_ncbi_api_key_here",
"CORE_API_KEY": "your_core_api_key_here"
}
}
}
}关于
env字段:只有ELSEVIER_API_KEY是必需的(用于 Scopus / ScienceDirect),其余全部为可选项——如果您没有某个 Key,请整行删除(JSON 不支持注释,且删除后剩下的最后一行末尾不能带逗号)。各可选字段说明:
如果您不希望每次重启时强制刷新缓存包,则改为添加以下内容:(但这会导致包更新时您需要对包进行手动更新)
{
"mcpServers": {
"uniarticles-mcp-server": {
"command": "uvx",
"args": [
"uniarticles-mcp"
],
"env": {
"ELSEVIER_API_KEY": "your_elsevier_api_key_here",
"NCBI_API_KEY": "your_ncbi_api_key_here",
"CORE_API_KEY": "your_core_api_key_here"
}
}
}
}📖 如果您在该方法下遇见了任何问题,详见:傻瓜式配置攻略
如果您在启动服务时遇到 “MCP error -32000: Connection closed” 错误,请在 Cherry Studio 项目的该issue界面寻找解决方法:https://github.com/CherryHQ/cherry-studio/issues/3264
方法二:本地安装(高级)
需要 Python 3.10+ 和 uv (推荐) 或 pip。 此方法适合开发者或需要手动配置环境的用户。
使用 uv:
# 克隆仓库
git clone https://github.com/your-username/UniArticles_MCPserver.git
cd UniArticles_MCPserver
# 同步依赖并运行
uv sync
uv run uniarticles-mcp使用 pip:
# 克隆并设置虚拟环境
python -m venv .venv
.venv\Scripts\activate
# 安装依赖
pip install -e .
# 运行
python -m uniarticles配置说明
在项目根目录创建 .env 文件:
ELSEVIER_API_KEY=your_elsevier_api_key
# 必须配置。可以在 https://dev.elsevier.com/ 中申请。
NCBI_API_KEY=your_ncbi_api_key
# 可选。NCBI Entrez 无此 Key 也可用;配置后仅将 PubMed 限速从 3 请求/秒
# 提升到 10 请求/秒。免费申请:先登录 https://www.ncbi.nlm.nih.gov/
# 再前往 https://account.ncbi.nlm.nih.gov/settings/
# 可选。CORE 无此 Key 也可用,但额度低得多(未认证档 100 tokens/天、
# 10 次/分钟,且不提供 fullText;配置后 1,000 tokens/天、25 次/分钟)。
# 使用 CORE 系工具时强烈建议配置。免费申请:https://core.ac.uk/services/api#form
CORE_API_KEY=your_core_api_key项目结构
src/
└── uniarticles/
├── server.py # MCP Server 入口点
└── sources/ # 数据源模块
├── arxiv.py
├── pubmed.py
├── scopus.py
└── ...
pyproject.toml # 项目元数据与依赖验证安装
本项目未附带独立的测试套件;请通过启动服务来验证安装是否成功。服务通过 stdio 通信,启动成功后会保持运行并静默等待客户端发来的 JSON-RPC 输入(按 Ctrl+C 退出):
uv run uniarticles-mcp # 使用 uv 安装时
# 或
python -m uniarticles # 使用 pip 安装时若进程启动过程中没有出现导入或配置错误,即表示安装正常。
可用工具列表
以下工具按数据源分组,每个数据源一张表格。共注册 29 个工具,只要对应数据源的 Key(如有要求)已配置即可全部使用。每个工具都返回相同的归一化 JSON 结构(ok、source、query、count、items、error)。
Scopus
工具名 | 参数 | 说明 |
|
| 按查询串搜索 Scopus 文档。默认按相关度排序,因此用标题检索能直接返回目标文献本身,而不是最新的松散匹配;如需按日期排序请显式传 |
|
| 按 EID 获取归一化的摘要记录(标题、作者、机构、期刊、标识符)。摘要正文仅在更高级别、受订阅限制的视图下才会返回。 |
|
| 按 ISSN 查询期刊/连续出版物元数据(出版商、Open Access 状态、收录年份、学科领域、期刊主页)。 |
| (无) | 检查 Elsevier API 用量/速率限制状态(通过 Scopus 端点)。 |
|
| 按期刊名、出版商、学科、Open Access 状态等多个可选条件搜索期刊/连续出版物(无需 ISSN),结果含 SNIP/SJR 计量指标。 |
|
| 查询 Scopus/ScienceDirect 学科分类代码,用于构造更精确的检索查询。 |
ScienceDirect
工具名 | 参数 | 说明 |
|
| 按标识符(pii/doi/pubmed_id/eid)检索归一化的文章记录(标题、作者、期刊、标识符、主题)。 |
|
| 获取某篇文章的配图/表格/补充材料的元信息(文件名、MIME 类型、对象类型、下载链接)。仅返回对象清单与链接,不下载二进制内容本身。 |
ArXiv
工具名 | 参数 | 说明 |
|
| 按查询串搜索 arXiv 论文。 |
|
| 列出指定 arXiv 分类下最新提交的论文。 |
|
| 按 ID 获取指定 arXiv 论文的元数据。 |
可用性提示:上游主机 export.arxiv.org 可能偶发卡住。在 2026-09-18 的全量回归中,arxiv_paper_detail_by_id 与 arxiv_latest_paper_list_by_category 均挂起约 5 分钟后以连接超时失败,而同一时刻、同一主机上的 arxiv_paper_search_by_query 在 1.4 秒内正常返回;约 15 分钟后故障自行恢复,三个工具全部正常。那次挂起原本是无上限的:arxiv.Client 根本不暴露任何超时参数,只有 page_size / delay_seconds / num_retries。自 v3.4.0 起,客户端改为单次请求 15 秒超时 + 整体 45 秒兜底,因此上游卡住时会快速失败并给出同时标明两个上限的可操作错误,而不是长时间挂起。_verify/arxiv_timeout_check.py 通过把客户端指向一个"只接受连接、从不响应"的本机监听来离线复现该行为;若真的遇到超时,可运行 _verify/arxiv_connectivity_test.py 做 DNS→TCP→TLS→HTTP 分层诊断,以区分上游卡顿与本机网络问题。
PubMed(NCBI Entrez)
以下工具直连 NCBI E-utilities。无 Key 即可使用;配置可选的 NCBI_API_KEY(NCBI 免费申请)仅将限速从 3 请求/秒提升到 10 请求/秒。
工具名 | 参数 | 说明 |
|
| 按关键词检索(ESearch + EFetch),返回归一化记录(标题、摘要、作者、期刊、doi、pmid、pmcid、关键词、日期)。 |
|
| 对一批 PMID 做轻量元数据批量查询(ESummary),含检索工具没有的字段(pmcid、pubstatus、pmcrefcount、elocationid)。无效 PMID 会作为带 |
|
| 查询与某 PMID 主题相关的 PubMed 文献(ELink“相似文献”),返回相关 PMID 列表(已剔除该 PMID 自身)。 |
|
| 查询某 PMID 的 PubMed Central 关联—— |
Crossref
工具名 | 参数 | 说明 |
|
| 按关键词检索文献。无需 Key。 |
|
| 按 DOI 查询单篇文献。无需 Key。 |
Europe PMC
工具名 | 参数 | 说明 |
|
| 检索 Europe PMC(EBI 生命科学聚合库,区别于 NCBI PubMed),仅返回首页结果。无需 Key。 |
DOAJ
工具名 | 参数 | 说明 |
|
| 检索开放获取期刊目录(DOAJ)。无需 Key。 |
OpenAIRE
工具名 | 参数 | 说明 |
|
| 检索 OpenAIRE(欧洲开放科学聚合库)。无需 Key。 |
CORE
CORE 在本版本由 1 个工具扩展为 9 个(其余 8 个数据源共 20 个工具,合计 29)。它是本服务器唯一同时提供"分布统计"(年 / 出版社 / 学科等 facet)与"机构库画像"(某篇论文被哪些机构库采集)的数据源,其余 8 个源都只有"检索列表"或"按标识符取单条"。
work 与 output 的区别(选工具前先看这一句):work 是 CORE 去重后的作品级记录(同一篇论文只有一条);output 是未经去重的原始采集信号(同一篇论文在几个机构库被采集就有几条)。要论文本身用 works 系工具,要看某个采集副本的许可/仓库信息才用 outputs 系工具。
工具名 | 参数 | 说明 |
|
| 按关键词检索 CORE 作品。 |
|
| 按裸 DOI(如 |
|
| 取某作品在各机构库中的版本实例列表(未去重的采集副本),各项含 |
|
| 取作品的生命周期时间戳( |
|
| 按关键词统计 CORE 文献的分布(年 / 作者 / 出版社 / 学科等)。返回的不是文献列表,而是每个维度一项( |
|
| 按关键词检索 CORE 的机构库 / 期刊源(data providers,不是论文)。返回 |
|
| 按数字 ID 取机构库详情。两个可选开关各追加一次上游请求: |
|
| 按数字 ID 取原始采集记录详情( |
|
| 按关键词检索原始采集记录(outputs,未去重)。建议使用 |
全部 CORE 工具均无条件注册(无 Key 也能调用,只是额度更低)。触发限流时错误信息会给出可重试时间与当前额度,并提示配置
CORE_API_KEY。
可参考agent提示词
你是一名文献检索助手,已接入 UniArticles 的 MCP 工具。
请严格按以下四步依次执行,不要跳步。
第一步 —— 检索之前,先拆分我的需求。
用一句话复述我到底要什么,并拆出以下要素:
(a)主题/研究问题;(b)检索类型:广泛扫描 / 定位某一篇已知文献 / 按作者或期刊查找;
(c)学科领域;(d)时间窗口;(e)语言;(f)需要多少篇算够用。
第二步 —— 判断哪些数据源「一定不匹配」,并明确告诉我。
按以下规则直接跳过,不要调用这些源:
- 主题仅属生物医学/生命科学 —— 排除 arXiv(学科不对口)。注意 DOAJ、CORE、
OpenAIRE 是全学科的开放获取聚合源,生物医学一样覆盖,不要按学科排除它们;
它们是否该排除只取决于下一条。
- 主题属物理、数学、计算机、统计、定量生物学、经济学 —— arXiv 可用;
其他学科(人文社科、临床医学等)—— 排除 arXiv(它只有预印本,没有期刊覆盖)。
- 我要找同行评审 / 主流期刊 / 非开放获取的文献 —— 排除 DOAJ、CORE、OpenAIRE
(三者只收开放获取内容,会把结果集带偏)。
- 我要全文或 PDF —— UniArticles 的任何工具都不返回全文或二进制文件。
请先说明这一点,然后只把各源用作「元数据 + 链接」。
- 我要非英文(如中文)文献 —— 本服务器不收录 CNKI / 万方 / 维普,没有任何中文
数据库源。实测「深度学习」这类中文查询:Crossref、DOAJ、CORE 能返回中文题录,
Europe PMC 返回中文期刊的英译题录(标题带方括号),Scopus 命中不稳定(同一查询
0~1 条),PubMed 与 arXiv 为 0 条。请如实说明覆盖率远低于中文数据库,不要声称
可以替代 CNKI/万方。
- Scopus、ScienceDirect —— 仅在 `ELSEVIER_API_KEY` 已配置时可用。若调用返回授权/
配额错误,把该源标记为「不可用」后继续,不要悄悄放弃这部分需求。
无论如何至少保留两个数据源。
第三步 —— 在剩下的数据源中按以下顺序检索,并遵循对应的查询写法。
1. Scopus —— 定位已知文献用 TITLE("完整标题");主题检索用
TITLE-ABS-KEY(词 AND 词);count 取 5–10。
2. Crossref —— 普通关键词检索;同时用它核对每篇文献的 DOI。
3. PubMed(仅生物医学)—— 定位已知文献用 完整标题[Title],且不要加引号,
加了引号反而返回 0 条。不要直接传一长句自然语言:诸如 "in" 这类停用词
会让整条查询归零。多个词组之间请显式使用 AND。
4. Europe PMC —— 字段语法与 PubMed 一致,例如 TITLE:"完整标题"。
5. arXiv(仅限预印本学科)—— 定位已知文献用 ti:"完整标题";主题检索用 all:词。
6. DOAJ、CORE、OpenAIRE —— 仅开放获取。DOAJ 的相关度排序偏弱,
用标题式查询会返回明显离题的结果,因此每一条都必须先核对标题再写进结果。
CORE 除了检索,还能给出**分布统计**(core_work_aggregate_by_query,比如这批
文献都发在哪些年/出版社)与**机构库画像**(core_data_provider_* /
core_work_outputs_by_id,比如某篇论文被哪些机构库采集);需要这类信息时
直接调用对应工具,不要用其它源的结果自行拼凑。
7. ScienceDirect —— 只能按标识符查询(DOI/PII),它没有检索工具,不要试图检索。
每个源取 5–10 条。同一主题在多个源各查一遍是预期用法,而不是「失败后降级」。
任何源报错就跳过,并记录下来。
第四步 —— 汇总成表并汇报。
先按 DOI 去重,再按归一化标题去重。只输出一张 Markdown 表格,按发表时间由新到旧:
| 文献标题 | 标题翻译 | 发表时间 | 期刊/会议 | DOI 链接 | 文献源 | 内容介绍 |
- 标题翻译:把文献标题翻译成中文;若原标题已是中文,此列填「—」。
- DOI 链接:[10.xxxx/yyy](https://doi.org/10.xxxx/yyy) 格式;若无 DOI,则给出该源的原始链接。
- 内容介绍:1–2 句,且只能依据工具真实返回的摘要撰写。
没有摘要时写「无摘要」,严禁自行编造或推测内容。
- 文献源:填工具返回的 `source` 值;同一篇文献被多个源命中时全部列出。
表格之后,再列出:跳过了哪些源及原因,以及哪些查询返回了 0 条结果。
我的需求:<在这里写下你要查找的内容>🤝 贡献与共建
囿于笔者主修化学方向,对其他研究方向的数据库及API开发情况不甚了解,欢迎有志之士提出PR、贡献其他数据源。
⚖️ 协议与致谢
协议
双许可:AGPL-3.0-or-later 或 商业授权
本项目以 GNU Affero 通用公共许可证 v3.0 或更高版本(AGPL-3.0-or-later) 开源发布,全文见 LICENSE。你可以据此自由使用、修改与再分发,包括商业用途——前提是遵守 AGPL 条款:若你分发修改后的版本,或将其作为网络服务提供给用户,必须向这些用户提供对应的源代码。
💼 商业授权: 若 AGPL 的传染性条款不适合你的场景——例如需要闭源集成到商业产品中,或需要在不公开修改的前提下将修改版作为网络服务运营——可另行联系作者获取商业授权:wangzh685@mail2.sysu.edu.cn。
说明:此前“AGPL-3.0 with commercial restriction(商业使用受限)”的表述不准确,已在 v3.4.0 更正。AGPL 并不限制商业使用,它限制的是闭源再分发与闭源网络服务。
特别致谢
ScopusMCP: ScopusMCP是笔者第一个开发成功的文献检索MCP工具,但初始相当臃肿与难以移植,感谢舍友 (https://github.com/qwe4559999) 提供的使用pypi和uv打包的建议。
特别声明
本项目使用了人工智能生成内容。
Available Tools
29 toolsarxiv_latest_paper_list_by_categoryA
List the most recently submitted arXiv papers in a given category
(e.g. 'cs.AI'). Multiple categories may be comma-separated (e.g.
'cs.AI,cs.LG'). Uses arXiv's official cat: query syntax.
| Name | Required | Description | Default |
|---|---|---|---|
| category | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description must carry the full burden. It discloses that the tool uses arXiv's `cat:` query syntax and supports multiple categories, which adds useful context. However, it does not mention the return format, default result count, or any constraints like invalid categories or rate limits. For a read-only listing tool, this is acceptable but not comprehensive.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no fluff. The primary purpose is stated first with a clear example, and the second sentence adds the multi-category capability and syntax detail. All information is relevant and efficiently delivered.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, but with no annotations, no output schema, and incomplete parameter documentation, the description leaves gaps. It covers the category parameter well but does not explain max_results or the expected output (e.g., list of paper titles/IDs). An agent could call it correctly for a basic case, but would lack clarity on optional behavior and response shape.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 thoroughly explains the 'category' parameter with examples and comma-separated syntax, but completely omits the 'max_results' parameter, leaving its meaning and default unspecified. The description adds value for one parameter but not the other, resulting in partial compensation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'List' and the resource 'most recently submitted arXiv papers' scoped by category. It differentiates from sibling tools like arxiv_paper_search_by_query (search by query) and arxiv_paper_detail_by_id (detail by ID) by specifying category-based listing. The examples and syntax note make the purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description makes it clear this tool is for listing by category, which distinguishes it from search and detail tools, though it does not explicitly name alternatives or state when not to use it. The category-centric purpose and the note on multiple categories provide sufficient context for an agent to choose this tool over siblings, but explicit exclusions are absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arxiv_paper_detail_by_idC
Get detailed information (abstract/metadata) for a specific ArXiv paper.
| Name | Required | Description | Default |
|---|---|---|---|
| paper_id | Yes |
TDQS
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. 'Get' weakly implies a read-only operation, but the description does not mention error behavior for invalid IDs, rate limits, authentication needs, or any other behavioral traits. It provides only the barest safety hint.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence with no filler words. It efficiently states the core purpose, though its extreme brevity leaves out important context.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 only a terse purpose, the description is incomplete. It does not explain what fields the returned metadata contains, what format paper_id takes, or that a search tool is the intended path to obtain the ID. An agent would lack critical information needed for reliable invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 only ties paper_id to 'a specific ArXiv paper,' which is a slight improvement over the raw schema, but it does not specify the expected format (e.g., arXiv ID like 2101.12345) or how the ID is obtained. This is insufficient for an agent to correctly construct the parameter.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a clear verb ('Get') and identifies both the resource ('a specific ArXiv paper') and the information type ('abstract/metadata'). It distinguishes itself from sibling search tools like arxiv_paper_search_by_query by implying a targeted lookup, though it does not explicitly mention 'by ID' or name the alternative.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
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 state that the paper_id is typically obtained from a search tool, nor does it mention any exclusions or prerequisites. The only implicit cue is 'for a specific ArXiv paper,' which is minimal.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
arxiv_paper_search_by_queryA
Search for papers in ArXiv using a query string.
query is passed to arXiv verbatim, so arXiv's field prefixes work —
use them to pin down one known paper, e.g.
ti:"Attention Is All You Need", au:Vaswani,
abs:transformer, cat:cs.LG. A bare title string is a loose
full-text query and will not reliably return the paper itself.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description must carry the behavioral burden. The description discloses that the query is passed verbatim, that field prefixes are supported, and that a bare title yields a loose full-text search. This adds valuable behavioral context beyond the schema. However, it does not mention any side effects (likely none for a read-only search), authentication needs, rate limits, or what the output format looks like (no output schema exists). The description is not misleading, but it leaves several behavioral aspects undisclosed.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise and well-structured. It opens with a clear purpose statement, then immediately provides actionable details about query construction, including examples and a caveat. Every sentence adds value; there is no redundancy or fluff. The critical usage information is front-loaded, and the warning about bare titles is placed at the end to avoid distraction.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given that there is no output schema and only two parameters, the description should explain what the tool returns and how to interpret results. It does not mention the return format, pagination, or how results are ordered. It also does not explain how `max_results` affects the response. The description is strong on query semantics but incomplete on output expectations and parameter effects, leaving an agent to guess at the result structure.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate for both parameters. The description thoroughly explains the `query` parameter: it is passed verbatim, field prefixes work, and examples are given. This is excellent. However, `max_results` is not mentioned at all; its meaning is left to inference from the name and default value. Since the description covers only half of the parameters, it partially compensates for the lack of schema descriptions.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states 'Search for papers in ArXiv using a query string.' This is a specific verb ('search') and resource ('papers in ArXiv'), and it distinguishes the tool from sibling search tools (e.g., pubmed_paper_search_by_query) by explicitly naming ArXiv. It also contrasts with arxiv_paper_detail_by_id, which is for detail retrieval by ID, and arxiv_latest_paper_list_by_category, which is category-based listing.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage guidance: it explains that the query is passed verbatim to arXiv and that field prefixes (ti:, au:, abs:, cat:) can be used to pinpoint a specific paper. It also warns that a bare title is a loose full-text query and may not reliably return the paper. This is helpful for an agent to decide how to construct queries. However, it does not explicitly compare to alternative search tools (e.g., when to use this vs. a Scopus query) or state when not to use this tool, so it falls short of full guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
core_data_provider_detail_by_idA
Fetch one CORE data provider (repository / journal source) by numeric id.
include_stats and include_outputs each add one extra upstream request, so
they are off by default; turn them on only when you need the figures. Get the
numeric id from core_data_provider_search_by_query or from the
data_providers field of a work record.
The two sub-resources are best-effort: if the main detail call succeeds but a
sub-resource fails, the response stays ok=True and the failure is reported
under that sub-key (stats / outputs holding an {ok, error} object)
instead of discarding the detail you already have.
| Name | Required | Description | Default |
|---|---|---|---|
| provider_id | Yes | ||
| include_stats | No | ||
| include_outputs | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It reveals that include_stats and include_outputs each add an extra upstream request (performance cost) and are off by default, and it explains the best-effort sub-resource behavior: a sub-resource failure keeps ok=True and reports the error under the sub-key. These are concrete, non-obvious behavioral traits beyond the schema.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three focused paragraphs: purpose, id sourcing/flag guidance, and error handling. Every sentence adds value, is front-loaded with the core purpose, and avoids redundancy. It is efficiently structured and easy to parse.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple fetch-by-id tool with no output schema, the description covers the essential operational details: how to get the id, when to use the optional flags, and how failures are handled. There is no missing information an agent would need to call it correctly, and the error semantics are fully specified.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 provider_id as a numeric id and tells where to find it, and it explains include_stats and include_outputs in terms of their cost and default state. This adds meaning beyond the bare type information, covering all three parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the verb 'Fetch' and the specific resource 'one CORE data provider' identified by numeric id. It distinguishes itself from sibling search tools by focusing on a single provider and explains how to obtain the id, making the tool's purpose unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It explicitly instructs how to get the provider_id from core_data_provider_search_by_query or from a work record's data_providers field, establishing when this tool is appropriate. It also advises enabling include_stats and include_outputs only when needed, which is practical guidance. It doesn't explicitly exclude alternatives, but the context is clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
core_data_provider_search_by_queryA
Search CORE's data providers — institutional repositories and journal sources.
Each item is a repository/journal source (id / name / type / url /
software / country_code …), not a paper. Take an id from here into
core_data_provider_detail_by_id, or reach a provider id from a work by
reading data_providers in core_work_detail_by_identifier / search results.
max_results is capped at 200 (verified against the real API in buildlog
step 69's F12 plus this step's limit probe: 50/100/200 all accepted).
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the behavioral burden. It usefully discloses a max_results cap of 200 and describes the shape of returned items as repository/journal sources rather than papers. However, it does not mention pagination, sorting, query syntax, authentication, or rate limits, which keeps this at a modest score.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose, followed by item-shape clarification, downstream routing, and the max_results cap. Each sentence earns its place, but the long parenthetical about the buildlog verification is slightly more verbose than necessary.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema and no annotations, the description covers the essential semantics: what is searched, what returned items look like, how to use the returned id, and the max_results limit. Minor gaps remain around pagination and exact query syntax, but it is adequate for tool selection and invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 says query searches provider records and that max_results is capped at 200, with 50/100/200 explicitly accepted. This gives an agent enough to invoke both parameters correctly, even though query syntax details are not provided.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific operation: searching CORE's data providers, specifically institutional repositories and journal sources. Explicitly says each item is not a paper, which distinguishes it from core_work_search_by_query and other literature-search siblings. Also names the downstream detail tool that consumes the returned id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Gives clear routing context: take an id from this tool into core_data_provider_detail_by_id, or find provider ids via data_providers in core_work_detail_by_identifier/search results. It doesn't enumerate when-not-to-use cases, but the 'not a paper' framing and downstream references make the intended usage clear.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
core_output_detail_by_idA
Fetch one raw CORE harvesting record (output) by numeric id.
An output is a de-duplicated source signal: the same paper shows up once
per repository that harvested it, whereas a work is CORE's merged record
for that paper. Call this when you need per-repository detail — license,
repositories, sdg, fulltext_status, source_fulltext_urls — and use
the works tools (core_work_detail_by_identifier) for the paper itself.
output_id must be numeric. Returns a single item.
| Name | Required | Description | Default |
|---|---|---|---|
| output_id | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are present, so the description carries the full burden. It clearly identifies the operation as a read-only 'Fetch', states that it returns a single item, explains the raw/de-duplicated nature of an output, and documents the numeric id requirement. It does not mention authentication, rate limits, or error behavior, but those are less critical for a simple lookup and 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.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is front-loaded with the core purpose and then efficiently builds context: output-vs-work distinction, usage criteria, and id constraint. Every sentence adds actionable information; there is no filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter detail lookup with no output schema, the description is complete: it defines the resource, gives the selection criteria, names the alternative tool, specifies the required id type, and indicates a single-item return with useful example fields. Nothing essential is missing for correct invocation.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema only provides `output_id` as a string with 0% description coverage, so the description must compensate. It does by explaining that `output_id` must be numeric and that it identifies a CORE output record. It could be more explicit about the exact integer format or how to obtain the id, but the essential semantic is clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb, resource, and access path: 'Fetch one raw CORE harvesting record (`output`) by numeric id.' It goes further to distinguish `output` from `work`, and names the sibling tool `core_work_detail_by_identifier` for the merged record, so an agent can tell this tool apart from related search/detail tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description explicitly says to call this tool when per-repository detail is needed, provides concrete fields (`license`, `repositories`, `sdg`, `fulltext_status`, `source_fulltext_urls`), and directs users to the works tools for the paper-level record. This gives clear when-to-use and when-not-to-use guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
core_output_search_by_queryA
Search CORE's raw harvesting records (outputs, not de-duplicated).
Difference from core_work_search_by_query: a work is CORE's merged
record for a paper (one per paper), while an output is the per-repository
signal CORE harvested (the same paper can appear several times, once per
repository). Use this tool to find a specific repository's copy of a paper
and inspect its license / fulltext_status / repositories; use the works
tools for the paper itself.
query accepts CORE's own syntax. Field-qualified forms such as
title:"..." and doi:"..." are recommended: this endpoint has
historically returned HTTP 500 (an upstream Azure Search expression error)
for some query expressions — an upstream behaviour, not something this
server retries around, so a 500 surfaces as-is with a hint to try a
field-qualified form.
max_results is capped at 100 and the upstream response inlines fullText
for every hit; the returned items keep metadata and links only.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and exceeds expectations. It discloses that outputs are not de-duplicated, that the same paper can appear multiple times, that upstream may return HTTP 500 for some query expressions (and that this server does not retry), that `max_results` is capped at 100, and that upstream `fullText` is stripped from the returned items. This gives an agent an accurate behavioral model.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is longer than typical but every sentence earns its place: purpose, differentiation, usage guidance, error behavior, and result-shape notes. The most important scoping point ('outputs', not de-duplicated) is front-loaded, and the separation into paragraphs aids scanning without redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool's complexity (duplication semantics, upstream instability, result trimming) and the absence of annotations and an output schema, the description is remarkably complete. It explains the resource type, the difference from works tools, query syntax, error behavior, result content, and limits—everything an agent needs to invoke the tool correctly and interpret its outcome.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 and does. For `query`, it explains that CORE's own syntax is accepted and recommends field-qualified forms with concrete examples (`title:"..."`, `doi:"..."`), plus warns about problematic expressions. For `max_results`, it states the hard cap of 100. This adds meaningful semantics beyond the bare schema types.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb and resource: 'Search CORE's raw harvesting records (`outputs`, not de-duplicated).' It also distinguishes itself from the sibling `core_work_search_by_query` by explaining the conceptual difference between `output` and `work`, making it immediately clear what this tool does and how it differs.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Explicitly states when to use this tool: 'Use this tool to find a specific repository's copy of a paper and inspect its `license` / `fulltext_status` / `repositories`; use the works tools for the paper itself.' Also recommends field-qualified query forms and warns against certain expressions, providing clear guidance on how to invoke it correctly.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
core_work_aggregate_by_queryA
Summarise the distribution of CORE works matching a keyword query.
This is a facet/distribution view, NOT a result list: each item is one
dimension (field / total_buckets / top[{value, count}]), with top
sorted by count descending and truncated to top_n (default 10, capped at
50). count in the response is therefore the number of dimensions
returned, not the number of papers.
query uses the same syntax as core_work_search_by_query. fields is
optional: leave it unset to let CORE pick its default dimensions, or pass
explicit camelCase dimension names (e.g. ["yearPublished", "authors", "publisher"]). Dimension names are passed through verbatim — CORE's
default set is snake_case (year_published, field_of_study) while an
explicit request is camelCase, and both are returned as-is. Each dimension
is capped by upstream at 100 buckets, so total_buckets is also capped at
100 and does not reveal the untruncated cardinality.
Aggregation queries cost more tokens than a plain search upstream; call it when you actually need a distribution, not after every search.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| top_n | No | ||
| fields | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With zero annotations, the description carries the full behavioral burden and succeeds admirably. It discloses the counterintuitive response semantics ('count in the response is therefore the number of *dimensions* returned, not the number of papers'), the truncation behavior (top_n default 10, capped 50), the verbatim casing behavior (snake_case defaults vs camelCase explicit, both returned as-is), the upstream 100-bucket cap on total_buckets, and the token-cost impact. This is thorough behavioral disclosure that would prevent real mis-invocations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Four tight paragraphs, each earning its place: one-line purpose, the critical facet-vs-list disambiguation, response and truncation semantics, parameter semantics, and a closing usage-cost warning. There is no filler or redundancy; the density is justified because schema coverage is 0% and there is no output schema, so the confusing points (count meaning, casing, caps) all need explanation.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 0% schema coverage, no annotations, and no output schema, the description is responsible for explaining parameters, return semantics, and safety/behavior — and it covers all of them. It explains the response shape, the meaning of top-level count, the bucket cap, and the cost profile. An agent reading this description can invoke the tool correctly and interpret its results without additional lookups.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 fully, and it does. It explains all three parameters: query syntax (deferred explicitly to the sibling), top_n (default 10, cap 50, what it truncates), and fields (optional, with concrete camelCase examples `["yearPublished", "authors", "publisher"]`, plus the verbatim casing and naming caveat). This exceeds what the bare schema provides and includes the semantic traps an agent would otherwise hit.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The first line names a specific verb and resource ('Summarise the distribution of CORE works matching a keyword query') and the second paragraph immediately disambiguates it from the sibling search tool: 'This is a facet/distribution view, NOT a result list.' This explicitly distinguishes it from core_work_search_by_query and the other search tools in the sibling list, leaving no ambiguity about what it returns.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The final paragraph gives explicit when/when-not guidance: 'Aggregation queries cost more tokens than a plain search upstream; call it when you actually need a distribution, not after every search.' It also routes the agent to the correct alternative by declaring that 'query uses the same syntax as core_work_search_by_query,' and tells the agent when to leave fields unset versus pass explicit values.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
core_work_detail_by_identifierA
Fetch the full CORE record of one work by bare DOI or numeric CORE ID.
Use the bare DOI form (e.g. 10.1038/nature12373) — the doi: prefix is
not a valid path segment upstream and returns 404. Both identifier forms
were verified against the real API in buildlog step 69 (F7).
The detail record carries dataProviders / outputs / identifiers that
keyword search results do not include. outputs here are URLs only; call
core_work_outputs_by_id to expand them. Returns a single item.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It does: it warns about the DOI prefix returning 404, notes that outputs are URLs only (not expanded content), and clarifies that both identifier forms were verified. It does not mention rate limits or authentication, but for a read-only fetch this is acceptable. It also states the return shape ('returns a single item') and the extra fields present.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a compact paragraph where each sentence adds value: purpose, DOI format warning, verification note, field differences from search, output expansion pointer, and return shape. No filler or redundancy. It is well-structured with the purpose first and practical guidance following.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 output schema, the description covers everything needed to call it correctly: identifier format, error behavior (404), what the response contains (single item, extra fields, outputs as URLs), and how to get expanded outputs. It also differentiates from siblings. Nothing essential is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, but the description fully explains the single parameter 'identifier'. It specifies the accepted forms (bare DOI or numeric CORE ID), gives a concrete example (10.1038/nature12373), and explicitly warns against the 'doi:' prefix. This goes far beyond the schema's bare 'string' type, making the parameter semantics crystal clear.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a precise verb-resource pair: 'Fetch the full CORE record of one work by bare DOI or numeric CORE ID.' It also distinguishes itself from sibling search tools by noting the detail record includes dataProviders/outputs/identifiers that keyword search results do not include, and it states it returns a single item. This is unambiguous and clearly differentiates from core_work_search_by_query and core_work_outputs_by_id.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives actionable usage guidance: it warns about the DOI prefix (doi:) causing a 404 and instructs to call core_work_outputs_by_id when outputs need expansion. It implies when to use this tool instead of search (when you need full record fields) but does not explicitly enumerate all alternatives. Still, the context is clear and helpful.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
core_work_outputs_by_idA
List the per-repository copies (outputs) CORE harvested for one work.
identifier MUST be a numeric CORE ID (e.g. 171513974); this sub-resource
rejects DOIs with a 404 (verified in buildlog step 69's F8/F11). If you only
have a DOI, call core_work_detail_by_identifier first and take the numeric
id from its core_id / identifiers fields.
Each item is a de-duplication source record, not the paper text: it carries
download_url / license / fulltext_status / data_provider, which is how
you tell how many repository copies exist and under what licence.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
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 explains that each item is a de-duplication *source record*, not the paper text, and lists the meaningful fields (download_url, license, fulltext_status, data_provider). It also discloses the 404 rejection for DOIs, which is a behavioral trait an agent needs to handle gracefully.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is compact and front-loaded: the purpose is stated in the first sentence, followed by the critical constraint and a usage alternative. Every sentence adds value, with no redundant or filler content.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 output schema, this description is complete. It covers the input format, error behavior, and the nature of the response items, giving an agent everything needed to invoke and interpret the result correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0% and the schema only labels the parameter as 'Identifier' with type string. The description compensates fully by specifying that identifier must be a numeric CORE ID, providing an example, and clarifying that DOIs are invalid. This is essential semantic information the schema omits.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'List the per-repository copies (`outputs`) CORE harvested for one work.' This clearly distinguishes it from sibling tools like core_work_detail_by_identifier (which returns work metadata) and core_output_search_by_query (which searches outputs across works).
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It gives explicit, actionable guidance: identifier MUST be a numeric CORE ID, DOIs are rejected with a 404, and if only a DOI is available, it directs the agent to call core_work_detail_by_identifier first and extract the numeric id. This is a textbook example of when-to-use and when-not-to-use guidance with a named alternative.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
core_work_search_by_queryA
Search CORE (global open-access aggregator) by keyword, with paging.
query accepts CORE's own query syntax (field qualifiers such as
title:"..." / doi:"...", boolean operators, phrase matching).
max_results is capped at 100 (CORE's per-request ceiling) and offset
pages through the result set; note that a large max_results returns a big
payload (roughly 435 KB for 100 hits) and can take up to ~45 s on slow
networks, so keep the default 10 unless you need more.
Returns metadata and download links only — the upstream fullText field is
excluded at the request level and never surfaces. Works without an API key,
but the anonymous tier is token-metered (100 tokens/day, 10 requests per
minute, no fullText); configuring CORE_API_KEY raises it to 1,000 tokens/day
at 25 requests per minute.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| offset | No | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses that only metadata and download links are returned, the fullText field is explicitly excluded, API key behavior and token/rate limits are described, and payload size/performance caveats are given. This goes well beyond basic disclosure, though it doesn't explicitly say 'read-only' or describe all possible response edge cases.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence provides operational value: purpose first, then query syntax, then limits/performance, then authentication/rate limits. It is not overly verbose, but the backtick-dense query syntax section could be slightly more compact. Overall a well-structured, front-loaded definition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given the tool has 3 params, no output schema, and no annotations, the description covers the essential operational context: return type (metadata and download links), query syntax, limits, performance, and auth. It does not describe the exact output structure, but it gives a sufficient high-level view for correct invocation. The sibling context includes many similar search tools, and this description makes the tool's role clear enough.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, and it does. Each parameter is explained: query uses CORE's syntax with examples, max_results has a cap and default, offset controls paging. It also provides practical guidance on when to adjust defaults, giving the agent clear semantic understanding beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Search') and resource ('CORE'), clearly identifying it as a keyword search tool. It distinguishes from sibling tools for other databases but does not explicitly differentiate from other CORE search tools like core_work_aggregate_by_query or core_output_search_by_query, so it is not a full 5.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It describes how to use the tool (query syntax, paging, max limit) and includes practical performance/limit warnings, but it does not state when to choose this tool over alternatives or mention exclusions. The usage context is implied by the description, but explicit comparison to sibling tools is absent.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
core_work_stats_by_idA
Fetch the lifecycle timestamps of one CORE work (deposited / published / updated / accepted).
identifier accepts either a bare DOI or a numeric CORE ID — unlike
core_work_outputs_by_id, this endpoint does not require a numeric id
(both verified in buildlog step 69's F9/F9b). Returns a single item with
only those timestamp fields, because that is all the upstream returns.
| Name | Required | Description | Default |
|---|---|---|---|
| identifier | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden — and it discloses the key behavioral trait: it returns a single item containing only timestamp fields, with the rationale that this is all the upstream returns. It also notes the identifier flexibility was verified. It doesn't cover error/edge-case behavior for invalid identifiers, but for a simple fetch the return-shape transparency is strong.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three tight sentences with the purpose front-loaded. The buildlog reference ('verified in buildlog step 69's F9/F9b') is a slightly tangential artifact for an agent but adds trust signal and is not harmful. No wasted words otherwise.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Complete for a simple single-parameter fetch tool with no output schema and no annotations. It covers purpose, the returned fields, parameter accepted formats, the single-item return shape (substituting for a missing output schema), and differentiates from its sibling. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate, and it does: it explains that the sole identifier parameter accepts either a bare DOI or a numeric CORE ID. This adds real meaning beyond the schema's bare 'string' type. It could specify DOI prefix requirements, but the core semantics are well covered.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb ('Fetch') plus a precise resource ('lifecycle timestamps of one CORE work') and enumerates the exact fields returned (deposited / published / updated / accepted). It also explicitly contrasts with the sibling core_work_outputs_by_id, so an agent can distinguish them without opening either schema.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
Names the sibling alternative (core_work_outputs_by_id) and gives the exact selection condition — this endpoint accepts a bare DOI and does NOT require a numeric id, unlike the alternative. This gives the agent an explicit when-to-use-this vs when-to-use-that rule.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crossref_work_detail_by_doiA
Look up a single work on Crossref by DOI. No API key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| doi | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the behavioral disclosure burden. It adds one useful fact—no API key is needed—and implies a read-only, single-object retrieval, but it does not mention error handling, response format, or any limits. This is adequate but has clear gaps.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single front-loaded sentence: it states the action and object first, then adds a useful prerequisite ('No API key needed'). There is no filler or redundant repetition of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup with no annotations and no output schema, the description is nearly sufficient for basic invocation: an agent knows what to call and that no key is required. But it omits expected return shape, DOI format guidance, and behavior for invalid or missing DOIs, leaving modest gaps.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the undocumented DOI parameter. It only restates 'by DOI' without providing a format, example, or validation hint beyond the property name already in the schema. The added semantic value is minimal.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the operation ('Look up'), the resource ('a single work'), the source ('Crossref'), and the lookup key ('DOI'). This distinguishes it from sibling tools like crossref_work_search_by_query, which searches by query rather than by a specific identifier.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The phrase 'single work ... by DOI' implies the tool should be used when the agent already has a DOI and needs that specific work. However, the description does not explicitly mention alternatives, when not to use it, or how it differs from other detail/lookup siblings, so usage guidance is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
crossref_work_search_by_queryB
Search Crossref (DOI registration agency metadata) for works by keyword. No API key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description must carry behavioral disclosure. It usefully states that no API key is needed and implies a read-only search, but it omits rate limits, result limits, pagination, and query-matching behavior. The added auth note provides some value, but the description remains thin on behavior.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two concise sentences with no filler. The primary purpose is stated first, and the auth note adds useful context without bloating the text.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool is simple, with only two parameters and no nested objects, so the description is minimally viable. However, it does not explain max_results behavior or what kind of results the agent should expect, and there is no output schema to compensate for that gap.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description should compensate. 'By keyword' gives meaning to the query parameter, but max_results is entirely unaddressed beyond its raw schema definition, leaving its semantics and effect on the call undocumented.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific action ('Search'), resource ('Crossref works'), and scope ('by keyword'), which clearly differentiates it from sibling search tools across other providers like scopus_document_search_by_query and from crossref_work_detail_by_doi. The audience is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is given on when to choose Crossref over the many sibling search tools, nor when keyword search is appropriate versus detail lookup. 'No API key needed' is an access benefit, not a usage rule, and no alternatives or exclusions are mentioned.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
doaj_article_search_by_queryA
Search DOAJ (Directory of Open Access Journals) for open-access articles by keyword. No API key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden of behavioral disclosure. It does add the useful note 'No API key needed,' but it omits other behavioral aspects such as read-only nature, return format, pagination, or rate limits. This is minimal disclosure for an unannotated tool.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is a single, concise sentence that front-loads the primary purpose and includes a key operational detail (no API key). It contains no fluff or redundancy, achieving excellent conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with no output schema and no annotations, the description lacks critical details such as return format, pagination behavior, sorting, or any limits. It is too sparse for an agent to reliably understand the full behavior and expected results.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the lack of parameter documentation. It only implicitly explains the 'query' parameter via 'by keyword,' but it does not explain 'max_results' beyond what the schema's name and default suggest. This is inadequate compensation for two parameters.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the tool's function: 'Search DOAJ ... for open-access articles by keyword.' It specifies a specific verb (search), resource (DOAJ), and object (open-access articles), which unambiguously distinguishes it from sibling tools that target other databases like Scopus, PubMed, or arXiv.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage for finding open-access articles in DOAJ, but it does not explicitly compare with alternative search tools or state when not to use it. There is no guidance on selecting this tool over others, though the database name itself provides some context.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
europepmc_paper_search_by_queryA
Search Europe PMC (EBI's life-sciences literature aggregator, distinct from NCBI PubMed) for papers by keyword. Returns the first page of results only (result ordering is Europe PMC's relevance ranking). No API key needed.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full burden and does well: it discloses that only the first page of results is returned, that ordering is by Europe PMC relevance ranking, and that no API key is needed. It does not explicitly state read-only behavior, but 'Search' implies no side effects, and these details are genuinely useful.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three sentences, each carrying distinct information: the source and distinctness, the first-page and ordering behavior, and the auth requirement. No filler, front-loaded with the core purpose.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple search tool with no annotations and no output schema, the description covers source, pagination, ordering, and auth. It is ambiguous about the relationship between max_results and 'first page', and it omits any details about the returned result format, but for a keyword search with two parameters, this is reasonably complete.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must compensate for the two parameters. It only mentions 'by keyword', which maps to the query parameter, but says nothing about max_results semantics, query syntax, or how pagination interacts with max_results. This is a significant gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly identifies the tool as a keyword search over Europe PMC, specifies the resource aggregator (EBI's life-sciences aggregator), and explicitly distinguishes it from NCBI PubMed. This allows an agent to immediately tell it apart from the many sibling search tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives clear context that this is for Europe PMC literature, and it explicitly notes it is distinct from PubMed, which helps direct an agent away from the PubMed tool. However, it does not name alternative sibling tools or provide explicit when-to-use/not-to-use rules beyond that one distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
openaire_research_product_search_by_queryB
Search OpenAIRE (European open science aggregator) for research products by keyword. No API key needed. NOTE: reference projects reported occasional HTTP 403 from this service; it was not reproduced during this project's probing. A network error here may reflect that known intermittency, not a tool bug.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the transparency burden and does meaningful work: it states no API key is required, flags a known intermittent HTTP 403, and advises that a network error may not be a tool bug. It omits obvious read-only/rate-limit details, but the operational caveat is valuable.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is three short sentences, each adding distinct value: core purpose, authentication requirement, and known-error caveat. There is no filler or repetition.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a simple 2-parameter search tool, it covers purpose, auth, and error behavior, but it leaves gaps: no statement of return shape, no guidance on result limits, and no sibling comparison. It is adequate but not fully self-contained.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must define both parameters. It provides only the phrase 'by keyword,' which maps to query, but says nothing about max_results' semantics, limits, or behavior. The parameter names are self-explanatory, but the description does not compensate for the missing schema documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'Search OpenAIRE (European open science aggregator) for research products by keyword.' It is clear what the tool searches over, but it does not explicitly distinguish itself from sibling search-by-query tools from other providers, so it falls 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.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance is provided about when to choose this tool over sibling aggregator searches (Scopus, arXiv, CORE, etc.). The description only implies usage by keyword and notes API-key-free access; there are no exclusions, prerequisites, or alternative routing.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pubmed_paper_search_by_queryA
Search PubMed by keyword via NCBI Entrez (ESearch to get PMIDs, then EFetch to retrieve and parse the article XML). Returns normalized records (title, abstract, authors, journal, doi, pmid, pmcid, keywords, date).
query is passed to NCBI verbatim, so PubMed field tags and MeSH
terms work. To pin down one known paper, use the title tag WITHOUT
quotes, e.g. Genome engineering using the CRISPR-Cas9 system[Title]
— wrapping the title in quotes together with the tag
("..."[Title]) makes NCBI return 0 results.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| max_results | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the disclosure burden. It transparently explains that the tool queries NCBI Entrez, retrieves XML, and normalizes records, and it exposes the surprising behavior where quoted title tags cause zero results. It does not mention rate limits, authentication needs, or failure modes, but for a read-only search tool the disclosed behavior is substantial.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is well-structured: the first sentence states the core purpose and pipeline, the second lists output fields, and a focused final paragraph gives a practical query-formatting caveat with an example. Every sentence adds useful information with no filler.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given there is no output schema and no annotations, the description is largely self-sufficient: it explains the workflow, return fields, query syntax, and a key pitfall. The main omission is the effect/limits of `max_results`, and it does not discuss error conditions, but the essential information for calling the tool correctly is present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
With 0% schema description coverage, the description must compensate for both parameters. It thoroughly explains `query`: verbatim passing, field tags, MeSH terms, and the title-tag warning. However, `max_results` is never mentioned in the description; only its default value appears in the schema, so the description only partially compensates for the schema's lack of parameter documentation.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description opens with a specific action and resource: 'Search PubMed by keyword via NCBI Entrez'. It also clarifies the internal pipeline (ESearch then EFetch) and the normalized output fields, which clearly distinguishes it from sibling tools that retrieve by ID or look up related articles.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description gives concrete usage guidance for a common case: how to pin down a known paper using the `[Title]` tag without quotes, and warns against a quoting pitfall that returns zero results. However, it does not explicitly contrast this tool with sibling PubMed tools (e.g., summary lookup or related-article search) or state when not to use it.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pubmed_paper_summary_lookup_by_pmidsA
Look up lightweight PubMed metadata for a batch of PMIDs via ESummary.
Faster than a full fetch and carries fields the search tool lacks (pmcid,
pubstatus, pmcrefcount, elocationid). Invalid PMIDs are returned as items
with a per-item error field rather than failing the whole call. Max 200
PMIDs per call (excess is truncated).
| Name | Required | Description | Default |
|---|---|---|---|
| pmids | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden and does so thoroughly. It discloses error handling (invalid PMIDs returned as per-item error fields), the batch limit (max 200, excess truncated), and performance characteristics (faster than a full fetch). It also lists the additional fields it provides.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise (two sentences) and front-loaded with the core purpose, then adds behavioral details. No filler or redundancy.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a single-parameter lookup tool with no output schema, the description covers all essential aspects: purpose, performance, fields included, error behavior, and input limits. Nothing an agent needs to call it correctly is missing.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 clarifies the pmids parameter is a batch, enforces a maximum of 200 with truncation, and explains how invalid IDs are handled. This adds meaning beyond the bare array-of-strings schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states the action ('Look up lightweight PubMed metadata') and the resource (batch of PMIDs via ESummary). It explicitly differentiates from the search tool by mentioning fields it lacks (pmcid, pubstatus, pmcrefcount, elocationid), making its role unambiguous among the sibling tools.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear context for when to use this tool: when you have PMIDs and need lightweight metadata, especially fields the search tool lacks, and it notes it's faster than a full fetch. However, it does not explicitly name alternative tools or state when not to use it, though the mention of 'the search tool' implies the distinction.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
pubmed_pmc_linkage_lookup_by_pmidA
Look up a PMID's PubMed Central (PMC) linkages. Returns TWO distinct groups, kept separate on purpose: 'own_pmc_fulltext' (this article's own open-access PMC full-text record, if any — check 'has_pmc_fulltext') and 'cited_by_pmc_articles' (other PMC articles that cite it). Both empty is a normal result, not an error.
| Name | Required | Description | Default |
|---|---|---|---|
| pmid | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the disclosure burden. It signals a non-destructive 'look up', explains the two result groups are deliberately separated, and explicitly says both empty is normal rather than an error. It doesn't mention auth, rate limits, or output pagination, but these are not critical for a simple lookup.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three compact sentences: purpose, return groups with inline clarification, and empty-result handling. No filler; the important disambiguation is front-loaded.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a one-parameter lookup with no output schema, the description covers the main result groups and tells the agent that empty results are valid. It stays short of specifying exact response fields or parameter formatting, but the core invocation semantics are present.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The only parameter, `pmid`, is self-explanatory and the description reinforces it as the article identifier. However, schema_description_coverage is 0%, and the text gives no format/example (e.g., numeric string) or constraints, so it only partially compensates.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('look up') and resource ('PubMed Central linkages'), then disambiguates the meaning with two named return groups ('own_pmc_fulltext', 'cited_by_pmc_articles'). This makes it clearly distinct from sibling search/summary tools even without naming them.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The usage is implied by the output description: an agent would call this when it needs PMC full-text availability and citing articles for a PMID. But it never states when to choose this over pubmed_related_article_search_by_pmid or pubmed_paper_summary_lookup_by_pmids, nor provides exclusions.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sciencedirect_article_object_by_identifierA
Get metadata (filename, mimetype, type, download link) for figures/tables/ supplementary materials attached to an article. Does NOT download the binary content itself -- only returns the metadata list and download links. identifier_type: doi or pii (both verified working); scopus_id/pubmed_id may also work.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | META | |
| identifier | Yes | ||
| identifier_type | No | doi |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations present, the description carries the full burden of behavior disclosure. It transparently states that the tool does NOT download binary content and only returns metadata plus download links. It could add error/auth/pagination details, but the core behavioral boundary is clear.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Three short sentences, each earning its place. The purpose is front-loaded, the download limitation is stated immediately, and the identifier-type guidance is compact and useful. No redundant or vague wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
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 metadata-list tool: it names what is returned, what is not returned, and which identifier types are likely to work. The missing treatment of the view parameter and lack of error or pagination details are minor gaps given the tool's simplicity.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
The input schema provides no descriptions (0% coverage), so the description must compensate. It adds concrete, actionable semantics for identifier_type: doi or pii are verified working, while scopus_id/pubmed_id may also work. The identifier parameter is self-explanatory, but the view parameter remains unexplained, preventing a perfect score.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Get metadata') and names the exact resource: figures/tables/supplementary materials attached to an article. It also lists the returned fields (filename, mimetype, type, download link) and explicitly distinguishes itself from binary download, which differentiates it from the sibling retrieval tool.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description clearly scopes when the tool should be used: when you need metadata and download links for attached objects, not when you need the binary content itself. It does not explicitly name an alternative tool such as sciencedirect_article_retrieve_by_identifier, so the guidance is mostly implicit rather than fully prescriptive.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
sciencedirect_article_retrieve_by_identifierA
Retrieve an article record by identifier type (pii, doi, pubmed_id, eid) and value. Returns a normalized record (title, authors, journal, identifiers, subjects, etc.). Default view is META (unrestricted); the full-text body is only populated under richer, entitlement-gated views.
| Name | Required | Description | Default |
|---|---|---|---|
| view | No | META | |
| identifier | Yes | ||
| identifier_type | No | pii |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the behavioral burden and does it well: it discloses the default view (META), that it is unrestricted, and that full-text body only appears under entitlement-gated views. It also clarifies that the output is a normalized record with specific fields. This goes beyond what the schema reveals and is directly relevant to call expectations.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with zero filler. The main purpose is front-loaded, and the view-related nuance occupies the second sentence. Every clause adds context about what the tool returns and how access is gated.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The tool has no output schema and no annotations, so the description is the only source of expectations. It lists the record contents and the META/full-text gating, which is good. But it lacks error behavior (e.g., not found), any request details like required authentication or rate limits, and does not contrast with the similarly named sibling sciencedirect_article_object_by_identifier, so an agent might not know which to pick.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must clarify parameters. It does add meaning by listing valid identifier_type values (pii, doi, pubmed_id, eid) and explaining the view default and gating. However, it does not specify the exact format for the identifier value (e.g., DOI format) nor enumerate possible view values beyond META, leaving ambiguity for a parameter with no enums.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
States a specific verb and resource: 'Retrieve an article record by identifier type... and value.' It names the identifier types (pii, doi, pubmed_id, eid) and lists the return fields (title, authors, journal, identifiers, subjects). It does not explicitly differentiate from the sibling sciencedirect_article_object_by_identifier, but the core purpose is unambiguous.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
No guidance on when to use this tool versus the many sibling retrieve/search tools. The only contextual hint is about view restrictions (META vs entitlement-gated), which is about behavior, not tool selection. The agent must infer when to prefer this over sciencedirect_article_object_by_identifier or scopus_abstract_detail_by_eid from the name alone.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scopus_abstract_detail_by_eidA
Get detailed abstract information for a Scopus document (by EID). Returns a normalized record (title, authors, affiliations, journal, identifiers, etc.). Default view is META (unrestricted); the abstract body is only populated under richer views such as FULL/META_ABS if your subscription supports them.
| Name | Required | Description | Default |
|---|---|---|---|
| eid | Yes | ||
| view | No | META |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses the default view (META) and that the abstract body is only available under richer views subject to subscription. This is useful behavioral context, though it does not address potential errors, authentication, or the exact output structure beyond listing fields.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
Two sentences with no filler. The purpose is front-loaded, and the view/subscription nuance is stated clearly. Every sentence adds value.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
The description covers the main purpose, the view behavior, and the subscription dependency. However, it lacks error handling guidance, exact parameter values, and any mention of authentication or rate limits. Given the tool's moderate complexity and absence of annotations, it is reasonably complete but not exhaustive.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema coverage is 0%, so the description must compensate. It mentions the view concept ('Default view is META... richer views such as FULL/META_ABS') but does not explicitly document the parameters or their allowed values. The eid parameter is only inferred from the tool name and the phrase 'by EID', and no details are given about its format or constraints.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a clear verb ('Get') and a specific resource ('Scopus document by EID'), and enumerates the returned fields. It distinguishes this tool from siblings like scopus_document_search_by_query by focusing on retrieval by EID rather than search.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies usage when an EID is already known, but it does not explicitly mention alternatives or when not to use it. It lacks direct guidance on when to prefer a search or other Scopus tools, so usage context is only implied.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scopus_api_usage_statusA
Check current Elsevier API usage/rate-limit status (via Scopus endpoint).
| Name | Required | Description | Default |
|---|---|---|---|
No parameters | |||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
No annotations are provided, so the description carries the full burden. 'Check' implies a read-only, non-destructive operation, which is a useful behavioral signal. However, it does not disclose whether the call itself counts against rate limits, whether authentication is required, or what fields the status response contains. Core behavior is clear, but higher-level transparency is missing.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
A single, front-loaded sentence with no filler. It states the action, target, and endpoint efficiently. Every word earns its place.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a zero-parameter status-check tool, the description identifies the resource and action. However, with no output schema and no annotations, an agent is left without any indication of the response shape (e.g., whether it returns raw HTTP headers, JSON fields, or error details). This is a minor gap but could affect how the agent interprets the tool's output.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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. There is no parameter semantics burden on the description, and the schema correctly reflects an empty parameter object.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description uses a specific verb ('Check') with a clear resource ('Elsevier API usage/rate-limit status') and scopes it via the Scopus endpoint. None of the sibling tools relate to usage status, so it is immediately distinguishable without needing to inspect schemas.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description implies the intended use case: checking current rate-limit or usage status for the Elsevier/Scopus API. Since no sibling tool offers this capability, explicit exclusions or alternative routing are unnecessary. The context is clear, though it doesn't explicitly state when to use it (e.g., upon hitting rate limits).
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scopus_document_search_by_queryA
Search for documents in Scopus using a query string.
query is passed to Scopus verbatim, so Scopus's own field syntax is
available — use it when hunting one specific paper, e.g.
TITLE("Attention Is All You Need"), DOI(10.1016/...) or
AUTHKEY(Smith). A bare title string is instead treated as a loose
keyword query, which surfaces related-but-different papers ahead of the
target. sort defaults to relevancy; pass sort="coverDate"
for newest-first ordering.
| Name | Required | Description | Default |
|---|---|---|---|
| sort | No | relevancy | |
| view | No | STANDARD | |
| count | No | ||
| query | Yes |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries full responsibility. It discloses key behavioral traits: query is passed verbatim, supports Scopus syntax, bare title behaves as loose keyword, and sort defaults to relevancy. Yet it omits other important behaviors such as pagination, rate limits, authentication requirements, or what the response contains. This is adequate but not comprehensive for a tool with no structured metadata.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two short paragraphs, front-loaded with the primary purpose, followed by precise usage guidance. Every sentence adds value—no fluff. The examples are compact and directly illustrate the intended usage. This is exemplary conciseness.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given no output schema, no annotations, and 0% schema coverage, the description needs to cover a lot. It does explain query handling and sort behavior, but leaves out other parameters (count, view), output format, error conditions, and any rate limits. For a search tool that could return large result sets, such details are important. The description is not complete enough for an agent to fully anticipate behavior without additional lookup.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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 thoroughly explains 'query' (verbatim, field syntax, bare-title behavior) and 'sort' (default relevancy, option for coverDate). It does not explain 'count' or 'view' parameters, which are left to the schema's generic names. Since it covers the two most critical parameters with rich detail and examples, it substantially adds value beyond the schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description explicitly states 'Search for documents in Scopus using a query string' with a specific verb and resource. It further differentiates by explaining Scopus's field syntax and giving concrete examples (TITLE, DOI, AUTHKEY), which clearly sets it apart from sibling search tools in other databases. This is unambiguous and actionable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It provides clear usage guidance: use field syntax for precise single-paper lookup, and notes that a bare title yields loose keyword results. It also explains the default sort and how to change it. However, it does not explicitly mention when to avoid this tool or point to alternative sibling tools (e.g., crossref for DOI-based lookup), so it stops short of full when/when-not guidance.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scopus_serial_title_by_issnC
Get journal/serial metadata (title, publisher, Open Access status, coverage years, subject areas, homepage) by ISSN. Default view is STANDARD (verified working with a basic subscription tier).
| Name | Required | Description | Default |
|---|---|---|---|
| issn | Yes | ||
| view | No | STANDARD |
TDQS
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, but it only mentions the default view and a subscription-tier validation. It does not describe whether the operation is read-only, what happens for invalid or unknown ISSNs, how pagination or limits behave, or what the response structure looks like.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is two sentences that are front-loaded with the tool's core purpose and then a short operational note. It is efficient and avoids filler, though the subscription-tier parenthetical is slightly niche.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a tool with no output schema, no annotations, and 0% schema description coverage, the description is too thin. It does not cover the view parameter's options, ISSN formatting requirements, error behavior, or expected return shape beyond a high-level field list, leaving agents to guess at important call details.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, but it only implicitly defines 'issn' as a lookup value and mentions the 'view' default without explaining allowed values or behavior. The listed metadata fields describe output, not parameter meaning, and the view parameter's semantics are left underspecified.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description states a specific verb ('Get') and resource ('journal/serial metadata') with a clear lookup key ('by ISSN'), and lists the fields returned (title, publisher, Open Access status, coverage years, subject areas, homepage). This distinguishes it from the sibling scopus_serial_title_search_by_criteria, which searches by criteria rather than a specific ISSN.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
There is no guidance on when to use this tool versus alternatives like scopus_serial_title_search_by_criteria. The note about the default view working with a basic subscription tier is a minor operational hint, but it does not explain when to choose this tool over others or mention conditions like 'use when ISSN is known'.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scopus_serial_title_search_by_criteriaA
Search journals/serials by multiple optional criteria (no ISSN required). Sibling of scopus_serial_title_by_issn, which looks up ONE journal by exact ISSN; this tool searches across journals and returns a list, including SNIP/SJR metrics. Optional filters: title (substring match), issn, pub (publisher), subj (subject ABBREVIATION such as COMP/CHEM, NOT the numeric code), content (journal/tradejournal/conferenceproceeding/bookseries), date (year), oa (all/full/partial/none), start (page offset), count (page size, max 200). view defaults to STANDARD (ENHANCED/CITESCORE may require a higher subscription). Passing no filter is allowed but browses ALL serials (large) — supply at least one.
| Name | Required | Description | Default |
|---|---|---|---|
| oa | No | ||
| pub | No | ||
| date | No | ||
| issn | No | ||
| subj | No | ||
| view | No | STANDARD | |
| count | No | ||
| start | No | ||
| title | No | ||
| content | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations provided, the description carries the full behavioral burden. It discloses the view-dependent subscription limitation ('ENHANCED/CITESCORE may require a higher subscription'), the maximum page size (max 200), page offset semantics, and the large-result warning for unfiltered queries. These go well beyond basic purpose and materially affect invocation.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is dense but every sentence earns its place. It front-loads the purpose and sibling distinction, then uses a compact labeled list for filters, and closes with a crucial usage warning. No filler or redundant restatement of the tool name.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
For a 10-parameter tool with no output schema and no annotations, this description is remarkably complete. It covers all filter semantics, allowed values, pagination, subscription constraints, and the large-result pitfall. It even tells the agent what the return contains: a list with SNIP/SJR metrics.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
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, and it does thoroughly. It explains every field: title as substring match, subj as subject abbreviation not numeric code, content with allowed values, oa with allowed values, start as page offset, count page size max 200, and view with subscription caveat. This adds significant meaning beyond the bare schema.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
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: 'Search journals/serials by multiple optional criteria (no ISSN required).' It explicitly contrasts itself with the sibling scopus_serial_title_by_issn, which looks up ONE journal by exact ISSN, making the search-by-criteria scope unmistakable.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
It names the closest alternative, scopus_serial_title_by_issn, and states the deciding condition: one-journal-by-ISSN lookup vs. multi-journal list search. It also gives an explicit warning that passing no filter is allowed but browses all serials and will be huge, effectively telling the agent to supply at least one filter.
Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.
scopus_subject_classification_lookup_by_sourceA
Look up Scopus/ScienceDirect subject classification codes (to help build
more precise search queries). source is required and must be 'scopus' or
'scidir'. Optional filters: description, detail, code, abbrev, field (field
restricts which fields are returned). scidir results additionally carry
parent_code (hierarchy); scopus results have parent_code = null.
| Name | Required | Description | Default |
|---|---|---|---|
| code | No | ||
| field | No | ||
| abbrev | No | ||
| detail | No | ||
| source | Yes | ||
| description | No |
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full behavioral disclosure burden. It does disclose that scidir results include a parent_code for hierarchy while scopus results have null, which is useful. However, it does not mention output format, pagination, error behavior, or any side effects. For a lookup tool, this is moderate coverage.
Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.
Is the description appropriately sized, front-loaded, and free of redundancy?
The description is concise, two sentences, with the purpose front-loaded and the parameter explanation in a compact list. Every sentence earns its place without redundant wording.
Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.
Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?
Given 6 parameters, no output schema, and no annotations, the description covers the required parameter, optional filters, and the key behavioral difference between scopus and scidir. It doesn't describe the return structure, but for a lookup tool this may be acceptable. It is nearly complete for an agent to call it correctly.
Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.
Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?
Schema description coverage is 0%, so the description must explain all parameters. It does this by listing optional filters (description, detail, code, abbrev, field) and clarifying that 'field restricts which fields are returned'. This gives enough semantic meaning to each parameter, though it lacks examples or format details. It compensates well for the schema gap.
Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.
Does the description clearly state what the tool does and how it differs from similar tools?
The description clearly states a specific action ('look up'), a specific resource ('subject classification codes'), and its purpose ('to help build more precise search queries'). It also distinguishes the tool from siblings like document search or serial title lookups, so an agent can easily understand what this tool is for.
Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.
Does the description explain when to use this tool, when not to, or what alternatives exist?
The description notes that `source` is required and must be either 'scopus' or 'scidir', which is a constraint. It also frames the tool's use as building search queries, but it does not explicitly state when to use this tool over alternatives (e.g., when you need classification codes vs. searching documents). The usage guidance is implied rather than explicit.
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.
29 tool updates
v3.5.0- First observed
arxiv_latest_paper_list_by_category - First observed
arxiv_paper_detail_by_id - First observed
arxiv_paper_search_by_query - First observed
core_data_provider_detail_by_id - First observed
core_data_provider_search_by_query - First observed
core_output_detail_by_id - First observed
core_output_search_by_query - First observed
core_work_aggregate_by_query - First observed
core_work_detail_by_identifier - First observed
core_work_outputs_by_id - First observed
core_work_search_by_query - First observed
core_work_stats_by_id - First observed
crossref_work_detail_by_doi - First observed
crossref_work_search_by_query - First observed
doaj_article_search_by_query - First observed
europepmc_paper_search_by_query - First observed
openaire_research_product_search_by_query - First observed
pubmed_paper_search_by_query - First observed
pubmed_paper_summary_lookup_by_pmids - First observed
pubmed_pmc_linkage_lookup_by_pmid - First observed
pubmed_related_article_search_by_pmid - First observed
sciencedirect_article_object_by_identifier - First observed
sciencedirect_article_retrieve_by_identifier - First observed
scopus_abstract_detail_by_eid - First observed
scopus_api_usage_status - First observed
scopus_document_search_by_query - First observed
scopus_serial_title_by_issn - First observed
scopus_serial_title_search_by_criteria - First observed
scopus_subject_classification_lookup_by_source
TDQS
Scored across 29 tools
The tools are largely distinct by their target source (Scopus, PubMed, arXiv, etc.). However, there is some potential confusion between tools like 'core_work_search_by_query' and 'core_output_search_by_query' or 'pubmed_paper_search_by_query' vs 'europepmc_paper_search_by_query' if an agent doesn't read carefully, but descriptions clarify the differences.
Most tool names follow a clear pattern of '<source>_<action>_<object>_by_<identifier>' (e.g., scopus_document_search_by_query, arxiv_paper_detail_by_id). Deviations exist like 'arxiv_latest_paper_list_by_category' and 'scopus_api_usage_status' which break the pattern slightly, but overall it is consistent and readable.
With 29 tools, the count is on the high side but not extreme. The server aggregates multiple scholarly APIs (Scopus, arXiv, PubMed, Crossref, CORE, etc.), so many tools are needed. However, it feels slightly heavy and could be streamlined (e.g., combining some CORE output tools).
The domain is scholarly literature search and retrieval across multiple sources. Each source has at least a search and detail tool, covering core workflows. Minor gaps: no update or delete operations (not applicable for read-only APIs), but missing citation or full-text retrieval for some sources (e.g., no direct arXiv full-text download, no PubMed Central full-text retrieval beyond linkage).
Maintenance
Related MCP Connectors
Academic literature search, retrieval, and private library management on top of OpenAlex.
Scholarly search: OpenAlex, Crossref, arXiv, OpenCitations and PubMed in one endpoint.
Federated search of books and papers, BibTeX/RIS citations, open-access retrieval and reading.
Search arXiv/Semantic Scholar/OpenAlex + medical evidence (PubMed/Europe PMC) + LaTeX/PDF tools.
Related MCP Servers
- FlicenseNot gradedqualityDmaintenanceEnables AI assistants to search across multiple academic databases (PubMed, arXiv, bioRxiv, medRxiv, Semantic Scholar) through a unified interface. Supports advanced filtering, metadata retrieval, PDF downloads, and comprehensive research workflows with citation analysis.5-
- AlicenseNot gradedqualityCmaintenanceEnables LLMs to search, analyze, and summarize academic research papers in real-time from arXiv, Semantic Scholar, and PubMed. Provides automatic deduplication, citation analysis, and BibTeX generation across multiple research databases.13 npmMIT
- AlicenseNot gradedqualityFmaintenanceTurn any AI agent into an academic researcher that can search, read, cite, and write full literature reviews autonomously.14MIT
- AlicenseNot gradedqualityDmaintenanceEnables users to search and analyze academic papers from multiple sources, fetch metadata and full text, and build structured outputs like literature maps and paper comparisons.20 npmMIT