Skip to main content
Glama

FigTreeKit-MCP

简体中文 | English

面向 AI 助手的 MCP 服务器:把 FigTreeKit 的系统发育树 校验 → 分析 → 样式化 → 导出 → 渲染 流程暴露为 21 个工具、3 个资源和 2 个 Prompt。

版本 0.1.0 · 许可证 GPL-2.0-or-later · Python ≥ 3.11 · 仅渲染需要 Java 8+

FigTreeKit-MCP 基于 Model Context Protocol(MCP)和官方 Python SDK 的 FastMCP 实现。它不重新实现树算法:解析、Nexus 生成、分类学分析与 FigTree 渲染都委托给 FigTreeKit 内核,因此 MCP 结果与 figtreekit 命令行/API 保持一致,并可为每次样式化调用返回可复现的命令行。

特性

  • 21 个工具(T01–T21):环境检查与安装、校验、分析、样式化、类群操作、渲染和完整 CLI 透传。

  • 3 个资源:figtreekit://version、figtreekit://help、figtreekit://defaults。

  • 2 个 Prompt:create-publication-figure、taxonomy-audit。

  • 可复现性:style_tree、apply_config、export_nexus 返回等效的 cli_command 与 config_json。6 组黄金展示参数在 700 末端展示树上通过 MCP 与 CLI 的逐字节比较,并在归一化非确定性字段后与 Python API 基准语义一致。render_tree 返回 CLI 配方,但 Python 侧的配色后处理无法由 CLI 逐字节复现,结果中会明确说明。

  • 多树选择:multi_tree=first|last|random|split|all|ask、0 基 tree_index,以及用于复现 random 的 seed。

  • 安全边界:一个可写工作区 + 零到多个只读根;Path.resolve() 软链接收束;拒绝 ../盘符相对路径与 Windows 保留产物名;透传输出强制收敛到 run 目录并披露改写;shell=False。

  • 三种传输:stdio(默认,推荐)、SSE、Streamable HTTP。

  • 不阻塞事件循环但串行执行:每个同步 handler 在 AnyIO 工作线程中运行,同时由全局锁串行化调用,因为 figtreekit 使用进程级分类等级前缀与警告过滤器;异常统一转换为结构化错误信封。

  • 可运行示例:examples/ 下三个脚本默认使用内置 12 末端树,无需外部数据即可完成验证、审计和样式化(渲染需要 Java/JAR)。

Related MCP server: fallcompass-mcp

架构一览

MCP 客户端(Claude Desktop / Cursor / VS Code / 自建)
        │  stdio / SSE / Streamable HTTP
        ▼
FastMCP 服务器(server.py)
  ├─ 工具注册:21 个同步 handler 由异步包装器送入 AnyIO 工作线程
  ├─ 全局串行化:每个调用获取进程级 RLock(分类学全局状态 + JVM 子进程)
  ├─ 异常 → 统一错误信封(ok:false / code / error_key / error / error_detail / details / run_dir)
  ├─ 资源:figtreekit://version / help / defaults
  ├─ Prompt:create-publication-figure / taxonomy-audit
  └─ lifespan:AppContext(版本、Java/JAR、工作区、限额、超时)
        │
        ▼
工具层(tools/*.py)
  ├─ 输入解析与白名单(_core.resolve_tree_source + _workspace)
  ├─ ParamSpec(params.py):参数校验 / to_cli_args / to_config_dict
  ├─ 样式化与类群操作(style.py / clade.py)
  ├─ 渲染(render.py,调用 Java + figtree_patched.jar)
  └─ CLI 透传(passthrough.py,shell=False)
        │
        ▼
figtreekit 内核(Nexus 生成、分类学分析、FigTree 渲染)

要点:

  • 21 个 MCP 输入 schema 保留原始同步 handler 的签名与类型标注;注册层只包装执行方式,不改变参数面。

  • params.ParamSpec 是 style_tree 参数面的唯一来源;to_cli_args() 生成命令行,to_config_dict() 生成 FigTree block JSON,tools/style.py 中的进程内应用逻辑与二者保持同一顺序。

  • AppContext 在服务器启动时创建并保存工作区、允许读取根、版本、Java/JAR 探测结果和超时配置;工具通过 get_app(ctx) 获取。

  • 每次调用分配自己的 run_<uuid8> 目录;产物描述符包含 relative、absolute、size_bytes,图像还可能有 data_uri、mime、width、height。

  • 服务器假设工作区、已安装的 figtreekit 包和 JAR 是可信的;不对 JVM/Python 做沙箱。

更详细的模块职责、扩展方式和并发模型见 docs/development_guide_CN.md。

环境要求

项

要求

说明

Python

3.11 或更高

pyproject.toml 中 requires-python = ">=3.11"

Java

8 或更高(仅渲染需要)

render_tree 调用 java -jar figtree_patched.jar

FigTree JAR

figtree_patched.jar

通常随 figtreekit 包提供;也可用 --jar 指定或用 setup_figtree 安装

操作系统

macOS / Linux / Windows

Windows 路径与 shell 注意事项见部署指南

可选

Pillow ≥ 10

安装 [render] extra 后用于图像尺寸和 base64 预览

不渲染时,Java/JAR 缺失不会影响校验、分析、样式化和导出工具;get_environment 会报告 render_ready 状态。

安装

方式一:标准 venv + pip(推荐)

macOS / Linux:

cd "<project-root>"
python3.11 -m venv .venv
. .venv/bin/activate
python -m pip install -U pip
python -m pip install -e ".[dev,render]"

Windows(PowerShell):

cd "<project-root>"
py -3.11 -m venv .venv
.\.venv\Scripts\Activate.ps1
python -m pip install -U pip
python -m pip install -e ".[dev,render]"

[dev,render] 会一并安装测试依赖(pytest、pytest-asyncio、pytest-cov、pytest-timeout、hypothesis、ruff、mypy)和 Pillow。只使用服务器而不跑测试时,可以安装:

python -m pip install -e ".[render]"

方式二:uv

cd "<project-root>"
uv venv --python 3.11
uv pip install -e ".[dev,render]"

方式三:安装脚本

仓库提供可移植的 POSIX shell 安装脚本,会检查 Python ≥ 3.11、安装 mcp、测试/渲染依赖,并以 editable 模式安装本项目:

cd "<project-root>"
bash scripts/setup_env.sh

可用环境变量:

# 指定 Python 解释器
PYTHON="/path/to/python3.11" bash scripts/setup_env.sh

# 同时以 editable 模式安装本地 FigTreeKit 源码(可选)
FIGTREEKIT_SRC="/path/to/FigTreeKit" bash scripts/setup_env.sh

Windows 下请在 Git Bash/WSL 中运行该脚本,或按上面的 PowerShell 命令手动安装。

依赖与 PyPI

figtreekit-mcp 的运行时依赖是 figtreekit>=1.1.4,<2 和 mcp>=1.29,<2;渲染可选依赖是 pillow>=10([render])。如果 FigTreeKit 尚未随环境安装,可以:

# 从 PyPI 安装已发布的 figtreekit
python -m pip install "figtreekit>=1.1.4,<2"

# 或从本地源码目录安装(开发时)
python -m pip install -e "<path-to-FigTreeKit>"

如果当前环境/镜像已经提供 figtreekit-mcp 包,也可以直接:

python -m pip install figtreekit-mcp

仓库本身以 src/ 布局开发;在仓库根目录执行 pip install -e ".[dev,render]" 即可。pyproject.toml 的 readme = "README_EN.md",因此构建元数据的长描述为英文 README;中文说明即本文件。

验证安装

python -c "import figtreekit_mcp, figtreekit, mcp; print(figtreekit_mcp.__version__)"
python -m figtreekit_mcp --version
python -m figtreekit_mcp --self-test

--self-test 会检查依赖、21 个工具注册、stdout 纯净性、Java/JAR、样式往返、工作区白名单和(Java 可用时)PNG 渲染,返回 0 表示全部通过。

启动

stdio(MCP 客户端使用)

macOS / Linux:

"<project-root>/.venv/bin/python" -m figtreekit_mcp \
  --transport stdio \
  --workspace-root "<project-root>/figtreekit-mcp-workspace" \
  --allow-read-root "<data-dir>"

Windows:

"<project-root>\.venv\Scripts\python.exe" -m figtreekit_mcp `
  --transport stdio `
  --workspace-root "<project-root>\figtreekit-mcp-workspace" `
  --allow-read-root "<data-dir>"

也可以使用 console script(确保其所在环境已激活):

figtreekit-mcp --transport stdio --workspace-root "<project-root>/figtreekit-mcp-workspace"

如果不传 --workspace-root,默认值是当前工作目录下的 figtreekit-mcp-workspace。相对路径输入以该工作区为基准解析。含空格的路径必须加引号。

SSE / Streamable HTTP

python -m figtreekit_mcp \
  --transport sse \
  --host 127.0.0.1 --port 8777 \
  --workspace-root "<project-root>/figtreekit-mcp-workspace"
python -m figtreekit_mcp \
  --transport http \
  --host 127.0.0.1 --port 8777 \
  --workspace-root "<project-root>/figtreekit-mcp-workspace"
  • --transport sse 的默认端点为 /sse;--transport http(Streamable HTTP)的默认端点为 /mcp。

  • 默认只允许回环地址。绑定 0.0.0.0 或其他非回环地址必须显式加 --allow-remote-bind,且服务没有内置认证或 TLS;只应在认证反向代理/VPN 之后使用。详见 SECURITY_CN.md。

常用启动参数

参数

默认值

作用

--transport {stdio,sse,http}

stdio

传输方式

--host

127.0.0.1

SSE/HTTP 绑定主机

--port

8777

SSE/HTTP 绑定端口

--allow-remote-bind

关闭

允许非回环绑定

--workspace-root

./figtreekit-mcp-workspace

可写工作区

--allow-read-root DIR

无

只读白名单根,可重复

--jar PATH

自动探测

指定 figtree_patched.jar

--content-max-bytes

10485760(10 MiB)

tree_content 上限

--file-max-bytes

209715200(200 MiB)

白名单文件上限

--cli-timeout

300

透传超时(run_figtreekit_cli 仍独立默认 300 秒)

--render-timeout

180

渲染 JVM 超时;调用未提供 timeout 时使用

--setup-timeout

600

setup_figtree 下载/编译超时

--keep-runs

50

保留的 run 目录数量

-v / -vv

WARNING

INFO / DEBUG 日志(写 stderr)

-q

关闭

仅 ERROR 日志

--log-file PATH

无

追加写日志文件

--self-test

关闭

运行自检并退出(0/1)

--version

—

打印 figtreekit-mcp 0.1.0

完整参数、工具参数默认值和错误键见 docs/tools_reference_CN.md。

客户端接入

三种客户端的完整配置、占位符说明和排错步骤见 docs/deployment_and_client_setup_CN.md。可直接编辑的模板在 examples/client_configs/,其中的 /absolute/path/to/... 都是占位符,必须替换为真实的 Python、工作区和数据目录绝对路径。

Claude Desktop(claude_desktop_config.json):

{
  "mcpServers": {
    "figtreekit": {
      "command": "<python>",
      "args": [
        "-m", "figtreekit_mcp",
        "--transport", "stdio",
        "--workspace-root", "<workspace>",
        "--allow-read-root", "<data-dir>"
      ]
    }
  }
}

Cursor(mcp.json)使用同样的 mcpServers 结构;VS Code(.vscode/mcp.json)使用 servers 结构,并加 "type": "stdio"。远程 SSE 客户端把服务器 URL 指向 http://127.0.0.1:8777/sse;Streamable HTTP 指向 http://127.0.0.1:8777/mcp。若客户端无法继承 shell 的 PATH,请使用 Python 与 Java 的绝对路径。

工具、资源与 Prompt

工具(T01–T21)

编号

工具

作用

T01

get_environment

运行时环境快照(版本、Java/JAR、工作区、只读根、render_ready)

T02

check_figtree

检查 Java 8+ 与 figtree_patched.jar,缺失时返回结构化错误和提示

T03

setup_figtree

检查、复用或下载/编译 patched FigTree JAR

T04

validate_tree

深度校验 Newick/Nexus/FASTA/FASTQ

T05

summarize_tree

解析并摘要树结构、分支长度与末端标签

T06

cross_validate

树末端标签与 FASTA/FASTQ 序列 ID 交叉比对

T07

check_monophyly

单个或多个类群/末端名单的单系性检查

T08

analyze_taxonomy

按分类等级批量分析单系性

T09

taxonomy_completeness

分类学完整性/覆盖率报告

T10

style_tree

核心样式化:完整参数面 + 导出 FigTree Nexus

T11

apply_config

应用 figtree-block JSON 配置 + 操作序列并导出

T12

export_nexus

低层 Newick/Nexus 结构转换,不做样式化

T13

highlight_clade

为类群添加背景高亮带

T14

color_clade

为 MRCA 或全部后代分支着色

T15

set_clade_font

设置类群末端标签字体

T16

collapse_clade

按精确末端名折叠类群(三角/卡通)

T17

collapse_group

按分类类群名折叠,带单系预检

T18

collapse_rank

按等级折叠全部分类群,复现 CLI --collapse-rank

T19

clear_annotations

清除高亮/折叠注解(含内嵌注释)

T20

render_tree

通过 Java + JAR 渲染 PNG/PDF/SVG/JPEG

T21

run_figtreekit_cli

以参数数组执行任意 figtreekit CLI(零 shell)

资源(3)

URI

内容

figtreekit://version

版本、Python/MCP SDK、Java、JAR、工作区、只读根的 JSON 快照

figtreekit://help

figtreekit CLI 全量帮助文本与 MCP↔CLI 对照提示

figtreekit://defaults

FigTree 默认配置参数(figtree block 键,JSON)

Prompt(2)

名称

参数

用途

create-publication-figure

tree_file、tree_content、layout(默认 polar)、collapse_rank(默认 class)、render_formats(默认 PNG,PDF)

引导“验证 → 摘要 → 分析 → 样式化 → 渲染”的出版级出图流程

taxonomy-audit

tree_file、tree_content、rank(默认 phylum)

引导批量单系性分析、完整性核查和审计表输出

示例

三个示例脚本都默认使用内置 12 末端树,不依赖外部数据:

python examples/01_validate_and_summarize.py
python examples/02_taxonomy_audit.py
python examples/03_publication_figure.py --style-only   # 只样式化,不需要 Java
python examples/03_publication_figure.py                # 样式化 + PNG/PDF 渲染

示例

内容

外部依赖

01_validate_and_summarize

validate_tree + summarize_tree,输出表格

无

02_taxonomy_audit

分类学单系性/完整性 + 着色导出 .nex

无

03_publication_figure

极坐标样式化 + 折叠/配色 + PNG/PDF

渲染需要 Java 8+ 与 JAR;--style-only 不需要

每个脚本都有对应的 Markdown 剧本(examples/01_validate_and_summarize_CN.md / _EN.md 等);客户端配置模板在 examples/client_configs/,使用前请替换其中的占位符。

安全模型

  • 一个可写根(--workspace-root)+ 零到多个只读根(--allow-read-root);工作区根同时可读。

  • 输入路径经 Path.resolve() 规范化(跟随软链接),最终必须落在允许根内;含 .. 的路径在解析前被拒绝;盘符相对路径被拒绝;根内指向外部的软链接被拒绝。

  • 所有产物写入 run_<uuid8>;style_tree/apply_config/export_nexus 对 run_name 额外限制为字母、数字、_、-(1–64 字符),其他工具的产物名被限制为运行目录内的纯文件名;Windows 保留设备名不能作为产物名。

  • run_figtreekit_cli 使用 shell=False 的参数数组;禁止 argv[0] 为解释器/-m,禁止 --figtree-jar,输入文件参数经过白名单检查;输出目标参数总会被改写进 run 目录,并在 rewrites 中披露。

  • 输入文本在解析前扫描控制字符和 Unicode 双向覆盖字符;默认 tree_content 上限 10 MiB,文件上限 200 MiB。

  • SSE/HTTP 默认仅回环,且没有认证/TLS。不要把服务直接暴露到公网。

完整策略与报告方式见 SECURITY_CN.md。

质量与验证

  • tests/ 覆盖单元、工具层集成、真实 stdio 协议 E2E、安全边界、属性测试与 MCP↔CLI 等价性。

  • python -m pytest -q 运行完整测试;python -m figtreekit_mcp --self-test 检查依赖、21 个工具注册、stdout 纯净性、Java/JAR、样式往返与工作区白名单。

  • GTDB R232 与 700 末端展示树的真实数据测试需要外部数据;数据缺失时相关用例会跳过,跳过不等于通过。

  • 测试命令、覆盖率门限、等价性探针与 GTDB 验收说明见 docs/testing_and_acceptance_CN.md。

文档

许可证与引用

本项目采用 GPL-2.0-or-later。正式许可证文本见 LICENSE;中文解释见 LICENSE_CN.md(不替代正式文本)。第三方组件(FigTreeKit、FigTree、iText、Biopython、MCP SDK、Pillow)的归属与许可证见 NOTICE 和 NOTICE_CN.md。

引用方式见 CITATION.cff、CITATION_CN.md 和 CITATION_EN.md。

Available Tools

21 tools
analyze_taxonomyA

Analyze monophyly of all groups at a given taxonomic rank.

Equivalent to figtreekit --analyze-taxonomy RANK. Requires terminal labels carrying taxonomy info, or a whitelisted mapping file.

Args: tree_content: Newick/Nexus content. tree_file: Path to a tree file inside an allowed read root. rank: Taxonomic rank to analyze (domain..species). taxonomy_mapping_file: Optional CSV/TSV mapping (whitelisted). taxonomy_levels: prefix:rank list. group_size_min: Only report groups with at least this many taxa.

ParametersJSON Schema
NameRequiredDescriptionDefault
rankNo
tree_fileNo
tree_contentNo
group_size_minNo
taxonomy_levelsNo
taxonomy_mapping_fileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It discloses useful behavioral context: the taxonomy-label/mapping-file prerequisite and the whitelist/allowed-read-root security constraint on files. It is silent, however, on whether the operation is read-only and on any rate/side-effect behavior (return shape is covered by the output schema).

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

Conciseness4/5

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

Front-loaded with the core purpose, followed by the CLI equivalent and an efficient Args block. The figtreekit equivalence line is somewhat expendable, but overall it is tight and well structured with little waste.

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

Completeness4/5

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

Given six params, 0% schema coverage, and an existing output schema, the description covers prerequisites, security constraints, and every parameter, so it is largely self-sufficient. It stops short of an explicit sibling note, which is the only real gap for an agent choosing between this and check_monophyly.

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

Parameters4/5

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

Schema description coverage is 0%, yet the description compensates well by documenting all six parameters, including format hints (Newick/Nexus content, domain..species for rank, CSV/TSV for the mapping file, prefix:rank list, minimum group size). This meaningfully exceeds the raw schema, though a couple of entries remain terse.

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

Purpose4/5

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

States a specific verb+resource+scope: "Analyze monophyly of all groups at a given taxonomic rank." This is clearly distinguishable in scope from a general clade checker, but it never explicitly names or contrasts with the close sibling check_monophyly or taxonomy_completeness. Clear purpose, missing explicit sibling differentiation.

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

Usage Guidelines3/5

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

Provides a meaningful precondition ("Requires terminal labels carrying taxonomy info, or a whitelisted mapping file") which tells the agent when the tool is applicable. However, it names no alternatives and gives no explicit when-to-use vs check_monophyly guidance. Usage is implied via prerequisites rather than stated.

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

apply_configA

Apply a FigTree JSON config (figtree-block keys) plus an ordered operations list and export Nexus. Leaner than style_tree for agent-driven advanced tweaks.

All accepted parameters are validated before execution (collapse_style, multi_tree, auto_color_rank/collapse_rank and every operation field); the execution order is annotations → auto-color/collapse-rank → collapse operations, matching the CLI.

Args: config: Any figtree-block key → value mapping (dot-separated keys). operations: Ordered clade operations (same schema as style_tree). taxonomy_levels: Custom rank prefixes (prefix:rank,...); active during both loading and taxonomy analysis. seed: Reproducible tree selection for multi_tree="random".

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
configNo
run_nameNo
tree_fileNo
multi_treeNo
operationsNo
tree_indexNo
tree_contentNo
collapse_rankNo
collapse_styleNocollapse
auto_color_rankNo
taxonomy_levelsNo
taxonomy_mapping_fileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden, and it does add real processing context: validation of all accepted parameters before execution and the deterministic execution order (annotations → auto-color/collapse-rank → collapse operations) matching the CLI. It stops short of the higher-value disclosures an agent needs for a tool that exports files — whether it writes/overwrites anything, where output goes, or what happens on validation failure.

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

Conciseness4/5

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

Purpose and sibling differentiation are front-loaded, then processing behavior, then a clean Args list — a logical order with no filler. It is somewhat dense with parenthetical asides and the long validation sentence could be tightened, but every sentence carries information.

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

Completeness3/5

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

With 13 parameters, zero required, 0% schema coverage, and no annotations, the description should resolve how to actually invoke the tool meaningfully; it instead documents only a subset of params and never explains valid combinations or required inputs when everything is optional. The presence of an output schema excuses it from describing return values, but the input-side gaps remain.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate, and it does explain several non-obvious params: config ('figtree-block key → value mapping, dot-separated'), operations ('same schema as style_tree'), taxonomy_levels ('prefix:rank,...' active during loading and taxonomy analysis), and seed ('reproducible tree selection for multi_tree="random"'). But roughly half the 13 parameters (tree_file, tree_content, tree_index, run_name, taxonomy_mapping_file, multi_tree) get no explanation in either schema or description, so coverage is only partial.

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

Purpose5/5

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

States a specific verb ('apply') and the exact resources it operates on ('a FigTree JSON config (figtree-block keys) plus an ordered operations list') and its output ('export Nexus'). It also explicitly differentiates itself from the sibling style_tree ('Leaner than style_tree for agent-driven advanced tweaks'), so an agent can pick between 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.

Usage Guidelines4/5

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

It gives a clear selection signal against one sibling — use this when you want the 'leaner' path for 'agent-driven advanced tweaks' versus style_tree. However it provides no explicit when-not conditions and never addresses overlap with the separate export_nexus or run_figtreekit_cli siblings, even though it also claims to export Nexus, so routing is partly left to inference.

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

check_figtreeB

Check Java 8+ and the figtree_patched.jar; return actionable hints.

Args: jar_path: Optional explicit JAR path to check instead of auto-detection.

ParametersJSON Schema
NameRequiredDescriptionDefault
jar_pathNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. 'Check' and 'return actionable hints' imply a non-mutating diagnostic, but the description never confirms whether it modifies the environment, downloads anything, or requires permissions, and it omits any cost or latency expectations.

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

Conciseness4/5

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

Two short lines with the core purpose front-loaded and no filler; the Args block is compact. Slightly terse for the amount of behavioral information an annotation-free tool needs, but nothing is wasted.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the single-parameter surface is simple. Still, with no annotations the description should have clarified side effects (does the check only report, or also fix/install) to be complete for an agent deciding whether it is safe to call.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate for the single parameter, and it does: it explains jar_path is optional, is an explicit path, and overrides auto-detection. That is the key semantic the bare 'string' schema lacks, though format expectations (absolute vs relative) are unstated.

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

Purpose4/5

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

States a specific verb (check) and concrete resources (Java 8+ and figtree_patched.jar) plus the outcome (actionable hints), which is far more informative than a tautology. It does not, however, distinguish itself from adjacent siblings such as setup_figtree or get_environment, so an agent must infer which diagnostic to call.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of when this is preferable to setup_figtree or get_environment, and no prerequisites. The only routing hint is the optional jar_path override, which is about invocation, not tool selection.

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

check_monophylyA

Check whether one or more taxonomic groups are monophyletic.

Supports special identifiers LUCA / LACA / LBCA / root, and exact taxon lists. strict=True raises monophyly_error as soon as any group is not monophyletic.

Args: tree_content: Newick/Nexus content. tree_file: Path to a tree file inside an allowed read root. groups: List of group names (str) or exact taxon lists (list[str]). taxonomy_levels: prefix:rank list (e.g. "d:domain,p:phylum"). strict: Fail on any non-monophyletic group.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupsNo
strictNo
tree_fileNo
tree_contentNo
taxonomy_levelsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

With no annotations, the description must disclose behavior. It usefully states that special identifiers LUCA/LACA/LBCA/root are supported, that tree_file must be inside an allowed read root, and that strict=True raises monophyly_error immediately. However, it omits explicit read-only/safety information and side-effect behavior, leaving some burden unmet.

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

Conciseness4/5

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

The description is front-loaded with purpose and key behavior, then follows with a compact Args list. It is largely efficient, though the Args section is verbose relative to the schema, which is necessary here because the schema has no descriptions.

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

Completeness4/5

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

An output schema exists, so return values need not be explained. The description covers all parameters and key behavior like strict error handling and allowed read roots, but it still lacks usage guidance and sibling differentiation, which keeps it from being fully complete.

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

Parameters5/5

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

Schema description coverage is 0%, so the description is the sole source of parameter meaning. It documents all five parameters, including Newick/Nexus format for tree_content, allowed read root for tree_file, group formats and special identifiers for groups, a prefix:rank example for taxonomy_levels, and failure semantics for strict.

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

Purpose4/5

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

The description uses a specific verb ('Check') and resource ('monophyletic') for taxonomic groups, clearly stating what the tool does. It does not differentiate from siblings such as validate_tree or analyze_taxonomy, which likely also operate on tree/taxonomy data, so it falls short of a 5.

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

Usage Guidelines2/5

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

The description lists capabilities and arguments but provides no when-to-use guidance, prerequisites, or alternatives. It does not explain when an agent should choose this tool over siblings like validate_tree or analyze_taxonomy.

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

clear_annotationsA

Clear highlight and collapse annotations, including embedded ones.

Both pending annotations and [&!hilight=...] / [&!collapse=...] comments already present in the input tree text are removed before the tree is loaded/exported. Colors and fonts are intentionally NOT part of this tool (use color_clade / set_clade_font to manage them).

Args: clear_hilights: Clear background highlights (default true). clear_collapses: Clear collapses/cartoons (default true). strip_annotations: Also strip generic [&...] annotations from the text. Nexus root markers [&R] / [&U] are preserved so rooting is unchanged.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_nameNo
tree_fileNo
tree_contentNo
clear_hilightsNo
clear_collapsesNo
strip_annotationsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.1/5.0
Behavior4/5

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

No annotations are provided, so the description carries the burden and does well: it discloses the timing of removal (before the tree is loaded/exported) and a non-obvious edge case (Nexus root markers [&R]/[&U] are preserved so rooting is unchanged). It doesn't cover permissions or what the result looks like, but the side-effect disclosure is genuinely beyond structured data.

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

Conciseness4/5

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

The core action and scope are front-loaded in the first sentence, followed by a compact Args block that pairs each documented parameter with its meaning and default. Slightly prose-heavy in the second sentence but no wasted sentences.

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

Completeness4/5

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

An output schema exists, so return values need not be described, and the description covers scope, side effects, and the annotative semantics of its flags. The only real gap is the unexplained input-source parameters, which prevents this from being fully self-contained.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It documents three of six parameters well, including defaults and the subtle strip_annotations behavior, but run_name, tree_file, and tree_content are left completely unexplained, leaving half the surface undocumented in either place.

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

Purpose5/5

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

States a specific verb ('Clear') plus a well-defined resource ('highlight and collapse annotations, including embedded ones'), and explicitly carves out what is NOT handled (colors/fonts, routing to color_clade / set_clade_font). An agent can distinguish this from highlight_clade, collapse_clade, and color_clade without opening any schema.

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

Usage Guidelines4/5

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

Clear context on when the tool applies: it removes both pending annotations and embedded '[&!hilight=...]'/'[&!collapse=...]' comments before the tree is loaded/exported, and it names sibling alternatives for the excluded color/font concerns. It stops short of explicitly stating when to prefer this over siblings like highlight_clade or collapse_clade as a cleanup step, so not a full 5.

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

collapse_cladeC

Collapse clades by exact taxon names into collapse (triangle+label) or cartoon style.

Args: collapses: [{"taxa": ["A","B","C"], "label": "Clade1", "collapse_type": "collapse|cartoon"}].

ParametersJSON Schema
NameRequiredDescriptionDefault
run_nameNo
collapsesNo
tree_fileNo
tree_contentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full burden. It discloses the visual outcome (triangle+label vs cartoon) but says nothing about whether the underlying tree is mutated, whether tree_file/tree_content is required, permission needs, or reversibility.

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

Conciseness4/5

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

Short and front-loaded: the purpose sentence comes first, followed by a compact Args example. No padding, though the example formatting is slightly noisy.

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

Completeness2/5

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

An output schema exists so return values need no explanation, but this is a mutation-style tool with no annotations and three undocumented parameters. The critical distinction between tree_file and tree_content (likely mutually exclusive inputs) is never addressed, leaving the agent guessing.

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

Parameters2/5

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

Schema description coverage is 0% and 4 parameters exist. The description richly documents the nested 'collapses' structure (taxa, label, collapse_type values), which is genuinely beyond the bare schema, but run_name, tree_file, and tree_content are left entirely unexplained.

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

Purpose4/5

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

States a specific verb (collapse) and resource (clades) with the selection mechanism ('by exact taxon names') and the two output styles ('collapse' triangle+label vs 'cartoon'). This is clear enough to distinguish it from collapse_rank on style grounds, though it never names the siblings collapse_group or collapse_rank.

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

Usage Guidelines3/5

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

The phrase 'by exact taxon names' implies the usage condition relative to group- or rank-based collapsing, but there is no explicit when-to-use, when-not, or named alternative. The agent must infer routing from the phrase alone.

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

collapse_groupA

Collapse clades by taxonomic group name with a monophyly pre-check (supports LUCA / LACA / LBCA / root).

A group whose lookup fails (unknown name / unresolvable taxonomy) is recorded as a per-group skipped entry and never aborts the whole request; strict=True converts that failure into monophyly_error.

Args: groups: [{"group": "Cyanobacteriota", "label": "...", "collapse_type": "collapse"}]. strict: Fail with monophyly_error on a non-monophyletic group. taxonomy_levels: Custom rank prefixes (prefix:rank,...). taxonomy_mapping_file: Optional taxonomy mapping table (whitelisted), for trees whose taxonomy is not embedded in tip labels.

ParametersJSON Schema
NameRequiredDescriptionDefault
groupsNo
strictNo
run_nameNo
tree_fileNo
tree_contentNo
taxonomy_levelsNo
taxonomy_mapping_fileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations present, the description carries the full burden and does add real behavioral context: failed group lookups are recorded as per-group 'skipped' entries and never abort the request, while strict=True converts that into a monophyly_error. It still omits what the collapse actually does to the output tree and whether the operation is reversible.

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

Conciseness4/5

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

Purpose and the monophyly caveat are front-loaded in the first sentence, followed by an efficient Args block. The Google-style docstring is reasonably tight, though a little structural overhead is spent on the Args header rather than prose.

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

Completeness3/5

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

An output schema exists, so return values needn't be described, but for a 7-parameter tree-mutation tool with no annotations the description leaves the tree input parameters and its relationship to sibling collapse tools unexplained.

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

Parameters3/5

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

Schema coverage is 0%, so the description must compensate, and it documents four parameters (groups with an example object shape, strict, taxonomy_levels, taxonomy_mapping_file). It leaves run_name, tree_file, and tree_content entirely unexplained, so roughly half the parameters remain undocumented in both places.

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

Purpose4/5

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

States a specific verb (collapse clades) and resource (taxonomic group name) with a monophyly pre-check, and notes LUCA/LACA/LBCA/root support. It implicitly separates itself from collapse_clade and collapse_rank by operating on group names rather than clade IDs or ranks, though it never names those siblings directly.

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

Usage Guidelines3/5

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

Usage is implied by 'by taxonomic group name' versus the rank/clade siblings, and the strict semantics give some context for when a failure should abort. However, there is no explicit statement of when to choose this tool over collapse_clade or collapse_rank, nor any stated prerequisites for the tree input.

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

collapse_rankB

Collapse all monophyletic groups at a rank (optionally auto-coloring at a rank first) — reproduces figtreekit --collapse-rank.

Args: rank: Rank to collapse (class, phylum, ...). collapse_style: collapse | cartoon. auto_color_rank: Rank for the pre-collapse palette coloring (defaults to phylum, matching the CLI). strict: Fail when a monophyletic group cannot be collapsed. taxonomy_mapping_file: Optional taxonomy mapping table (whitelisted), for trees whose taxonomy is not embedded in tip labels.

ParametersJSON Schema
NameRequiredDescriptionDefault
rankNo
strictNo
run_nameNo
tree_fileNo
tree_contentNo
collapse_styleNocollapse
auto_color_rankNo
taxonomy_levelsNo
taxonomy_mapping_fileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

No annotations are provided, so the description carries full behavioral burden. It does disclose one real behavior — strict causes failure when a monophyletic group cannot be collapsed — but says nothing about what collapsing does to the tree, whether inputs are mutated or written to new files, or permission/whitelist constraints beyond the vague '(whitelisted)' note.

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

Conciseness4/5

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

The lead sentence is front-loaded and states purpose plus the CLI equivalence in one line, followed by a compact Args list. Every line carries information; the only cost is the docstring indentation that makes it slightly less scannable as tool prose.

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

Completeness3/5

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

An output schema exists, so return values need not be described, but the input story is incomplete: four parameters, notably the tree source (tree_file/tree_content) and run_name, are undocumented anywhere, and there is no guidance on how tree_file and tree_content interact or which is preferred.

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

Parameters3/5

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

Schema description coverage is 0% across 9 parameters, so the description must compensate. It documents 5 of them (rank, collapse_style, auto_color_rank, strict, taxonomy_mapping_file) and usefully enumerates collapse_style values that the schema lacks enums for, but leaves run_name, tree_file, tree_content, and taxonomy_levels — including the core tree-input parameters — completely unexplained.

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

Purpose4/5

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

States a concrete verb+resource+scope: collapse monophyletic groups at a given taxonomic rank, with the optional pre-coloring step called out. The 'at a rank' framing partially distinguishes it from sibling collapse_clade/collapse_group, though it never names those siblings to make the boundary explicit.

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

Usage Guidelines2/5

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

There is no statement of when to use this over collapse_clade, collapse_group, or run_figtreekit_cli, and no prerequisites for tree input. The only contextual hint is that taxonomy_mapping_file is for trees whose taxonomy is not embedded in tip labels, which is a narrow edge case rather than general routing guidance.

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

color_cladeC

Color a clade's MRCA branch (all=false) or all descendant branches (all=true).

Args: colors: [{"taxa": ["A","B"], "color": "#2196F3", "all": false}].

ParametersJSON Schema
NameRequiredDescriptionDefault
colorsNo
run_nameNo
tree_fileNo
tree_contentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It implies a tree mutation but does not state what is modified, whether it needs an existing run/session, or what happens to prior colorings. Only the all-flag semantics are disclosed.

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

Conciseness4/5

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

Front-loaded with the core action and its branching behavior, followed by a compact example. Every sentence earns its place, though the Args example is terse and slightly cryptic for the colors structure.

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

Completeness2/5

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

An output schema exists so return values need not be explained, but for a 4-parameter mutation tool with no annotations and 0% schema coverage, the description omits the meaning of run_name, tree_file, and tree_content. An agent cannot reliably call it without guessing these inputs.

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

Parameters2/5

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

Schema description coverage is 0% and there are 4 parameters. The description documents the structure of the colors entry (taxa/color/all) but says nothing about run_name, tree_file, or tree_content, leaving half the parameters undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb ('Color') and resource ('a clade's MRCA branch' / 'all descendant branches'), and clarifies the all=false vs all=true distinction. It does not explicitly differentiate from close siblings like highlight_clade or style_tree, so it falls short of a 5.

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

Usage Guidelines3/5

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

The all flag gives implied usage context (MRCA branch vs all descendants), but there is no guidance on when to use this versus highlight_clade or style_tree, nor any prerequisites. Usage is inferable but not stated.

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

cross_validateA

Cross-validate tree tip labels against sequence IDs (FASTA/FASTQ).

Args: tree_content: Newick/Nexus content. tree_file: Path to a tree file inside an allowed read root. sequences_file: Path to the sequence file (must be whitelisted). strict: Raise validation_failed on any mismatch (default true). low_memory: Accepted for figtreekit parity; IDs are always read lazily.

ParametersJSON Schema
NameRequiredDescriptionDefault
strictNo
tree_fileNo
low_memoryNo
tree_contentNo
sequences_fileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does well: it discloses that strict raises 'validation_failed' on mismatch, that low_memory is effectively a no-op ('IDs are always read lazily'), and that sequences_file must be whitelisted and tree_file must live in an allowed read root. It adds real behavioral context beyond a bare statement, though it omits permission/auth details.

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

Conciseness4/5

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

Purpose is front-loaded in a single sentence, then parameters follow in a clean Args block. Every line adds information (the low_memory note is especially economical), with no redundant filler.

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

Completeness3/5

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

Return values are covered by the output schema and all parameters are documented, but with 0 required parameters and two alternative tree inputs (tree_content vs tree_file) the description never clarifies that exactly one must be supplied or how they interact. That ambiguity is a real gap for correct invocation.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it documents all five parameters with meaning: tree_content as Newick/Nexus content, tree_file as a path within an allowed read root, sequences_file's whitelisting requirement, strict's default and failure behavior, and low_memory's parity-only status. Only the mutual exclusivity/required-choice between tree_content and tree_file is left unstated.

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

Purpose4/5

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

States a specific verb and resource: cross-validating tree tip labels against sequence IDs. An agent can tell what it does, though it does not explicitly distinguish itself from the sibling validate_tree (which likely validates tree structure rather than trees vs. sequences).

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

Usage Guidelines2/5

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

The description never says when to use this vs. validate_tree, check_monophyly, or other validation siblings, and gives no prerequisites or exclusion conditions. The whitelist/read-root notes imply constraints but not routing guidance.

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

export_nexusB

Low-level: load tree content and export a base FigTree-compatible Nexus (structural conversion only, Newick → Nexus; no styling).

Args: include_taxa_block: Emit a TAXA block (default true). run_name: Optional artifact base name.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_nameNo
tree_fileNo
tree_contentNo
include_taxa_blockNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.2/5.0
Behavior3/5

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

With no annotations, the description carries the full burden, and it does disclose meaningful behavioral context: it is low-level, performs structural-only conversion with no styling applied, and include_taxa_block defaults to true. However, it says nothing about input source precedence (tree_file vs tree_content), permissions, or failure behavior.

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

Conciseness4/5

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

Front-loaded one-line summary followed by a compact Args list; little waste. The embedded newline formatting is slightly awkward but the content earns its place.

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

Completeness3/5

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

An output schema exists so return values need not be explained, and the schema/annotation profile is light. Still, the ambiguity between tree_file and tree_content is a real gap for a converter with four optional inputs.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must compensate, yet it documents only include_taxa_block and run_name. The two most important inputs, tree_file and tree_content, are entirely unexplained, leaving the agent unable to choose between a file path and inline content.

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

Purpose4/5

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

States a specific verb (load and export) and resource (base FigTree-compatible Nexus), and explicitly bounds scope with 'structural conversion only, Newick → Nexus; no styling'. This distinguishes it from styling siblings like style_tree. It stops short of naming a sibling alternative, so it lands at a clear 4 rather than 5.

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

Usage Guidelines3/5

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

'Low-level' and 'structural conversion only ... no styling' imply when this tool applies (raw format conversion, not presentation), but no sibling alternative is named and no explicit when-not condition is given. Usage must be inferred.

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

get_environmentA

Report the FigTreeKit-MCP runtime environment.

Returns versions of figtreekit / biopython / python / the MCP SDK, Java and figtree_patched.jar availability, the workspace root, and the allowed read-only roots.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It implies a safe read-only operation ('Report', 'Returns') and discloses the scope of inspection (Java/jar availability, workspace root, allowed read-only roots), but never explicitly states that it is side-effect-free or what permissions it needs. Adequate but not rich.

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

Conciseness4/5

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

Two sentences, front-loaded with purpose, then the returned fields. Slightly list-heavy but every element is relevant to deciding whether to call it.

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

Completeness4/5

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

For a zero-parameter, read-only diagnostic with a defined output schema, the definition is essentially complete. The enumeration of return values partly duplicates the output schema, but the surrounding context (workspace root, read-only roots) is useful framing.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies.

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

Purpose4/5

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

States a specific verb and resource ('Report the FigTreeKit-MCP runtime environment') that an agent can immediately distinguish from the tree-manipulation siblings. It doesn't explicitly contrast itself with those siblings, but the diagnostic purpose is unmistakable.

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

Usage Guidelines3/5

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

Usage is only implied: an agent can infer this is a diagnostic/environment-check tool useful before or when troubleshooting other calls. There is no explicit when-to-use statement, no mention of prerequisites or of any alternative sibling (e.g. check_figtree, setup_figtree) that might also be relevant.

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

highlight_cladeB

Add FigTree hilight annotations (background bands) to one or more clades.

Args: highlights: [{"taxa": ["A","B"], "color": "#804548", "width": 1.0, "offset": 0}] entries. offset must be an integer (the CLI parses --highlight offsets with int()). clear_existing: Clear existing highlights before applying — including [&!hilight=...] comments already embedded in the tree text (not just pending annotations).

ParametersJSON Schema
NameRequiredDescriptionDefault
run_nameNo
tree_fileNo
highlightsNo
tree_contentNo
clear_existingNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It does disclose a genuinely non-obvious destructive behavior — clear_existing wipes '[&!hilight=...]' comments already embedded in the tree text, not just pending annotations — which is exactly the kind of context an agent needs. It says nothing about how run_name/tree_file/tree_content interact, persistence, or side effects on other annotation state.

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

Conciseness4/5

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

The core purpose is front-loaded in the first sentence and the Args block is efficiently ordered with the most complex parameter first. Minor verbosity in the clear_existing explanation, but every clause carries useful information.

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

Completeness3/5

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

An output schema exists, so return values need no explanation. However, for a mutation tool with zero annotations and a stated destructive capability, the absence of any description of run_name/tree_file/tree_content and how the tool resolves its target tree leaves a real gap.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It gives rich detail for `highlights` (entry keys taxa/color/width/offset, plus the integer-offset constraint) and explains clear_existing, but leaves run_name, tree_file, and tree_content entirely undocumented — three of five parameters have no semantics anywhere.

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

Purpose4/5

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

States a specific verb and resource ('Add FigTree hilight annotations (background bands) to one or more clades'), and naming 'background bands' disambiguates the visual effect. It does not, however, differentiate itself from close siblings like color_clade, clear_annotations, or style_tree, so an agent must still infer which annotation tool applies.

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

Usage Guidelines3/5

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

There is conditional guidance embedded in clear_existing ('Clear existing highlights before applying'), which tells the agent when that flag is appropriate. But there is no explicit when-to-use-this-vs-color_clade/style_tree routing, and no prerequisites described, leaving usage largely implied.

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

render_treeB

Render a Nexus file (or tree content) to PNG/PDF/SVG/JPEG via the patched FigTree JAR; returns paths plus an optional base64 data URI preview. Applies background/foreground/label colour post-processing for raster formats.

Args: nexus_file: Path to a Nexus file (whitelisted; takes precedence). tree_content: Newick/Nexus content rendered through a base export. format: PNG|PDF|SVG|JPEG (default PNG). width: Image width in pixels. height: Image height in pixels. background_color: #RRGGBB background (raster post-process). foreground_color: #RRGGBB foreground (raster post-process). label_color: #RRGGBB protected label colour. jar_path: Explicit figtree_patched.jar path (default: app config / auto-detection). timeout: Max seconds for the JVM render call (default: app.render_timeout, normally 180). run_name: Optional artifact base name.

ParametersJSON Schema
NameRequiredDescriptionDefault
widthNo
formatNo
heightNo
timeoutNo
jar_pathNo
run_nameNo
nexus_fileNo
label_colorNo
tree_contentNo
background_colorNo
foreground_colorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.4/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It discloses useful traits (colour post-processing applies only to raster formats, default timeout ~180s, jar auto-detection/default config), but omits side effects such as where artifacts are written, whether rendering is expensive/blocking, or permission needs for whitelisted paths.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by a clean Args block; every line maps to a real parameter. Slightly terse for an 11-parameter tool but no wasted text.

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

Completeness4/5

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

An output schema exists, so return values needn't be detailed, yet the description still notes paths plus optional base64 preview. Parameter and behavioral coverage are adequate for a moderate-complexity render tool, leaving only usage routing unaddressed.

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

Parameters4/5

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

Schema coverage is 0% (properties carry only titles/defaults), so the description must compensate, and it does: all 11 parameters are explained, including precedence rules, raster-only post-processing, defaults, and the resolution order for jar_path/timeout.

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

Purpose4/5

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

States a specific verb (render) and resource (Nexus file / tree content) plus outputs and the rendering engine, so the agent knows exactly what it produces. It does not, however, differentiate itself from siblings like style_tree or run_figtreekit_cli, which also touch tree rendering/output.

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

Usage Guidelines2/5

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

The only routing hint is that nexus_file 'takes precedence' over tree_content, which is an argument-precedence note rather than tool-selection guidance. There is no statement of when to choose this tool over style_tree, export_nexus, or run_figtreekit_cli.

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

run_figtreekit_cliA

Run the figtreekit CLI with arbitrary argv (full CLI coverage; no shell). Outputs are redirected into the run directory; each rewrite is disclosed in rewrites.

Args: argv: The figtreekit arguments as an array. Use <input> as a placeholder consumed by tree_content / input_file. tree_content: If provided, written as run_dir/input.tre and replaces <input> in argv. input_file: Or a whitelisted file reference (same placeholder rule). timeout: Max execution seconds (default 300). capture_tail_bytes: Max bytes of stdout/stderr kept (default 64 KiB).

ParametersJSON Schema
NameRequiredDescriptionDefault
argvNo
timeoutNo
input_fileNo
tree_contentNo
capture_tail_bytesNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.6/5.0
Behavior4/5

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

With no annotations, the description carries the burden and does meaningful work: it discloses 'no shell', output redirection into the run directory, and rewrite tracking in ``rewrites``, which an agent needs to interpret results. It omits permissions side effects and whether the run directory persists or is discoverable, keeping it below 5.

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

Conciseness4/5

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

The core behavior is front-loaded in the first sentence, and the Args block is terse and information-dense. No filler, though the docstring formatting is slightly redundant with the schema.

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

Completeness4/5

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

For a complex arbitrary-CLI tool with an output schema already covering return values, the description supplies the non-obvious pieces: placeholder substitution, redirection, rewrite disclosure, and defaults. It is essentially complete, though guidance on interplay with sibling tools is absent.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it does: each of the five parameters is explained, including the ``<input>`` placeholder rule linking argv to tree_content/input_file and the defaults for timeout and capture_tail_bytes. Minor gaps remain (e.g. what a 'whitelisted file reference' means).

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

Purpose4/5

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

States a specific verb and resource ('Run the figtreekit CLI with arbitrary argv') plus scope qualifiers ('full CLI coverage; no shell'), making it clearly the raw escape hatch. It doesn't explicitly name a sibling like render_tree to contrast against, so it stops short of a 5.

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

Usage Guidelines2/5

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

The tool implies general-purpose CLI coverage, but the description never says when to reach for this versus the many focused siblings (render_tree, collapse_clade, etc.) or when-not to use it. No prerequisites or exclusions are given.

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

set_clade_fontC

Set font name/style/size for a clade's tip labels.

Args: fonts: [{"taxa": ["A"], "font_name": "Arial", "font_style": 1, "font_size": 14}]; font_style 0 plain / 1 bold / 2 italic / 3 bold-italic.

ParametersJSON Schema
NameRequiredDescriptionDefault
fontsNo
run_nameNo
tree_fileNo
tree_contentNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.7/5.0
Behavior2/5

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

No annotations are provided, so the description carries the full behavioral burden. It documents the fonts value shape but says nothing about whether this mutates a persistent tree, what setup/run context is required, or what happens to existing label styling. For an unannotated mutation tool this is a substantial gap.

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

Conciseness4/5

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

Efficient single-sentence statement followed by a compact Args block with an inline example. Front-loads the purpose, and the font_style legend is useful, though the Args rendering is somewhat dense.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but for a 4-parameter mutation tool with no annotations and 0% schema coverage, three parameters and all behavioral context are missing. The description is not complete enough to invoke the tool confidently.

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

Parameters2/5

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

Schema description coverage is 0%, yet only the fonts parameter is explained (with an example and the font_style enum mapping). The run_name, tree_file, and tree_content parameters are undocumented in both schema and description, leaving their mutual exclusivity and purpose ambiguous.

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

Purpose4/5

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

States a specific verb (Set) with a resource (font name/style/size) scoped to a clear target (a clade's tip labels). This is distinguishable from siblings like color_clade and style_tree, though it does not explicitly name those alternatives.

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

Usage Guidelines2/5

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

The description only says what the tool does; it gives no when-to-use conditions, no prerequisites, and no mention of alternatives such as color_clade or style_tree. Usage is left entirely to inference.

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

setup_figtreeA

Download (or use given jar) and compile the patched FigTree JAR.

Args: jar_path: Optional existing JAR to use (whitelisted; no compile). check_only: Only check dependencies (no download/compile). verbose: Print step-by-step setup progress.

ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNo
jar_pathNo
check_onlyNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.5/5.0
Behavior3/5

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

With no annotations, the description carries the full behavioral burden. It does disclose meaningful traits: a network download, a compile step, that jar_path is whitelisted and suppresses compilation, and that check_only suppresses both steps. It omits where artifacts are written, failure modes, and permission/network requirements, so it is adequate rather than rich.

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

Conciseness4/5

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

The opening sentence front-loads the core action, and the Args list is compact and scannable with zero filler. No wasted sentences, though the arg lines are terse enough to feel like schema restatement in places.

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

Completeness3/5

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

An output schema exists, so return values need not be explained. For a tool that downloads and compiles, though, the description says nothing about dependencies required, environment assumptions, or what happens on a failed compile, leaving gaps an agent would need to discover by calling.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate, and it largely does: all three parameters are given semantics beyond their types (jar_path whitelisted and no-compile, check_only skips download/compile, verbose prints progress). It stops short of format examples or default-value restatement.

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

Purpose4/5

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

States a specific verb and resource: downloads or uses a provided JAR and compiles the patched FigTree JAR. An agent can distinguish it from siblings like check_figtree or get_environment, though the description never names or contrasts those alternatives explicitly.

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

Usage Guidelines3/5

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

The Args block implies usage conditions (pass jar_path to skip compilation, set check_only to only verify dependencies), which is genuine conditional guidance. However, it never says when to prefer this tool over check_figtree or get_environment, nor what prerequisites (Java, network) are required.

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

style_treeB

Style a tree with the full FigTreeKit parameter surface and export a FigTree-compatible Nexus file. Returns the file, an equivalent cli_command and a config_json for byte-for-byte reproducibility, plus per-operation records.

Execution order mirrors the CLI: plain clade annotations (highlight / color / font / clear) → taxonomy auto-color / collapse-rank → collapse operations. --color-all is a global CLI switch, so mixing color and color_all operations cannot be represented exactly on the command line (the command colors every listed clade).

Multi-tree files: multi_tree="first"|"last"|"random" style one tree and export only that tree (CLI parity); pass seed to make random reproducible. split/all cannot be reproduced by a single MCP artifact (the CLI writes one file per tree), so the selected tree is styled while all trees are preserved, and an explicit warnings entry is returned.

Args: See the mapped parameter table in docs/tools_reference_EN.md; every argument is optional (unspecified = figtreekit default).

ParametersJSON Schema
NameRequiredDescriptionDefault
seedNo
zoomNo
orderNo
layoutNo
legendNo
rootedNo
root_ageNo
run_nameNo
unrootedNo
curvatureNo
expansionNo
scale_barNo
table_sepNo
transformNo
tree_fileNo
multi_treeNo
operationsNo
scale_axisNo
tip_labelsNo
tree_indexNo
label_colorNo
node_labelsNo
root_lengthNo
branch_widthNo
rooting_typeNo
scale_factorNo
tree_contentNo
branch_labelsNo
collapse_rankNo
radial_spreadNo
collapse_styleNocollapse
auto_color_rankNo
legend_positionNo
selection_colorNo
taxonomy_levelsNo
align_tip_labelsNo
background_colorNo
foreground_colorNo
additional_configNo
scale_axis_reverseNo
tip_label_font_nameNo
tip_label_font_sizeNo
scale_axis_font_sizeNo
tip_label_font_styleNo
taxonomy_mapping_fileNo
branch_color_attributeNo
node_display_attributeNo
taxonomy_delimiter_modeNo
branch_display_attributeNo
polar_root_angle_degreesNo
polar_angular_range_degreesNo
scale_axis_significant_digitsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does so well: it discloses execution ordering (plain annotations → taxonomy → collapse), the --color-all limitation that prevents exact CLI reproduction when mixing color and color_all, multi-tree styling/export behavior, and that a warnings entry is emitted when split/all cannot be reproduced. Auth, rate limits, and failure modes are not addressed, but the operational semantics are notably rich.

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

Conciseness4/5

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

Purpose is front-loaded in the first sentence, followed by returns, then behavior. Prose is dense but each clause carries information. The 'Args: See the mapped parameter table...' sentence is low-value filler but not egregious.

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

Completeness2/5

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

An output schema exists, so return-value explanation is not required (though provided). However, for a 52-parameter, zero-schema-coverage tool with no annotations, the description is materially incomplete: it neither documents the parameters inline nor supplies the enum-like value spaces (layout, order, multi_tree, collapse_style, etc.), leaving an agent unable to invoke it correctly without external docs.

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

Parameters2/5

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

52 parameters at 0% schema description coverage, and the description explicitly defers to an external file ('See the mapped parameter table in docs/tools_reference_EN.md'), which an agent cannot reliably resolve mid-call. Only a handful of parameters (multi_tree, seed) get inline meaning; the remaining ~50 remain opaque from both schema and description.

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

Purpose4/5

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

States a specific verb+resource clearly: styles a tree via the full FigTreeKit parameter surface and exports a FigTree-compatible Nexus file. The output artifacts (file, cli_command, config_json, per-operation records) are named. It does not, however, explicitly differentiate itself from single-operation siblings like highlight_clade, color_clade, or collapse_rank, which overlap in function.

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

Usage Guidelines3/5

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

Usage is implied rather than stated: the multi_tree semantics (first/last/random, seed for reproducibility) convey some when-to context, and 'every argument is optional' sets defaults. But there is no explicit guidance on when to choose this omnibus styling tool over the granular siblings (color_clade, collapse_rank, highlight_clade), nor any when-not conditions.

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

summarize_treeA

Parse and summarize a tree: format, counts, root state, branch stats.

Never fails on validation issues (use validate_tree for that); a multi-tree file without an explicit selection yields a multi_tree_hint instead of an error.

Args: tree_content: Newick/Nexus content. tree_file: Path to a tree file inside an allowed read root. include_tip_labels: Include the tip-label preview. tip_labels_limit: Max number of preview labels (1..10000). multi_tree: first|last|random|split|all selection for multi-tree Nexus. tree_index: 0-based index into a multi-tree Nexus.

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_fileNo
multi_treeNo
tree_indexNo
tree_contentNo
tip_labels_limitNo
include_tip_labelsNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A4.6/5.0
Behavior4/5

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

With no annotations, the description carries the full burden, and it does disclose non-obvious behavior: it never errors on validation, returns a multi_tree_hint instead, and tree_file must live inside an allowed read root (an access constraint). It never states the read-only nature of the operation explicitly, which keeps it short of a 5.

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

Conciseness4/5

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

Front-loaded with purpose and the validate_tree exclusion, then a compact Args block. Every line adds meaning rather than restating the schema. Slightly verbose in splitting behavior into two sentences, but nothing is wasted.

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

Completeness4/5

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

An output schema exists, so return-value detail is correctly omitted. The non-error contract and multi-tree handling are covered. Minor gaps remain: no guidance on choosing tree_content vs tree_file, and no mention that all parameters are optional.

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

Parameters5/5

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

Schema coverage is 0%, so the description must compensate and it does: each of the 6 parameters is explained with meaning beyond the bare names. Notably it surfaces the 1..10000 range on tip_labels_limit, the allowed values for multi_tree (first|last|random|split|all, absent from the schema), and the 0-based nature of tree_index.

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

Purpose5/5

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

States a specific verb+resource ('Parse and summarize a tree') and enumerates the outputs (format, counts, root state, branch stats), so the agent knows exactly what it gets back. It also explicitly distinguishes itself from the sibling validate_tree, which is the main source of confusion in this cluster.

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

Usage Guidelines5/5

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

Gives an explicit when-not plus the alternative: 'Never fails on validation issues (use validate_tree for that)'. It also states the conditional routing behavior for a multi-tree file with no selection, so the agent knows this call is safe to make even with ambiguous input.

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

taxonomy_completenessB

Report taxonomy completeness per rank; list complete/incomplete/missing tips.

Equivalent to figtreekit --check-taxonomy. Lists are truncated to the first 200 entries; totals are always returned.

Args: tree_content: Newick/Nexus content. tree_file: Path to a tree file inside an allowed read root. taxonomy_mapping_file: Optional CSV/TSV mapping (whitelisted). taxonomy_levels: prefix:rank list.

ParametersJSON Schema
NameRequiredDescriptionDefault
tree_fileNo
tree_contentNo
taxonomy_levelsNo
taxonomy_mapping_fileNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations are provided, so the description carries the full burden. It usefully discloses truncation to the first 200 entries, that totals are always returned, and that file-based inputs require allowed read roots and whitelisting. However, it omits read-only safety, error behavior, and mutual exclusivity of tree sources.

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

Conciseness4/5

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

Front-loads the purpose and CLI equivalence, then adds a critical truncation note before the structured argument list. The content is efficient and earns its place, though the argument repetition is expected for a parameter list.

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

Completeness3/5

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

With an output schema present, return values needn't be explained. The description covers arguments and truncation well, but for a 4-parameter tool with no schema descriptions and no annotations, it omits usage guidance and does not resolve how to choose between tree_file and tree_content or whether one is required.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must compensate. It describes all four parameters with formats and constraints: Newick/Nexus content, path within an allowed read root, optional whitelisted CSV/TSV mapping, and a prefix:rank list. It does not clarify whether tree_file and tree_content are alternatives or requiredness.

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

Purpose4/5

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

States a specific action (report taxonomy completeness per rank) and output (list complete/incomplete/missing tips), with an equivalent CLI command for grounding. It does not explicitly differentiate from sibling tools like analyze_taxonomy, but the purpose is clear enough for an agent to select it.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, no alternatives, and no clarification on when to prefer tree_file vs tree_content. Usage is implied only by the tool name and argument list, leaving selection between this and sibling tools to inference.

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

validate_treeA

Deep-validate a Newick/Nexus tree or FASTA/FASTQ sequence file.

Returns structured errors, warnings, format and counts. Semantics match figtreekit --validate but no persistent artifact is written.

Args: tree_content: Newick/Nexus/FASTA/FASTQ content (direct paste). tree_file: Path to a tree/sequence file inside an allowed read root. mol_type: Expected alphabet for sequences (DNA|RNA|protein). skip_length_check: Skip alignment-length consistency check (FASTA).

ParametersJSON Schema
NameRequiredDescriptionDefault
mol_typeNo
tree_fileNo
tree_contentNo
skip_length_checkNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

A3.8/5.0
Behavior4/5

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

With no annotations, the description carries the full burden and does reasonably well: it discloses the read-only nature ('no persistent artifact is written'), the shape of the result ('structured errors, warnings, format and counts'), and the constraint that tree_file must live 'inside an allowed read root'. It omits what happens when both content inputs are missing or how errors are categorized.

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

Conciseness4/5

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

Front-loaded with the one-line purpose, then returns, then a compact Args block with one line per parameter. Slightly redundant that it repeats the return summary already covered by the output schema, but no sentence is wasted.

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

Completeness4/5

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

For a four-parameter, zero-schema-coverage, zero-annotation tool, this covers purpose, outputs, and each argument. An output schema exists so return values need no further detail; the remaining gap is the mutual-exclusivity/inference rule between tree_content and tree_file.

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

Parameters4/5

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

Schema coverage is 0%, so the description must compensate, and it documents all four parameters: tree_content as direct paste, tree_file as a path under an allowed read root, mol_type with an inline enum (DNA|RNA|protein) not present in the schema, and skip_length_check tied to the FASTA alignment-length check. It still leaves the content-vs-file precedence rule unstated.

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

Purpose4/5

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

States a specific verb ('Deep-validate') and resource ('Newick/Nexus tree or FASTA/FASTQ sequence file'), and distinguishes itself from run_figtreekit_cli by noting it writes no persistent artifact. It does not, however, differentiate itself from the closely named sibling check_figtree, which is the most likely source of misselection.

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

Usage Guidelines3/5

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

The note that semantics match ``figtreekit --validate`` with no artifact written implies when this is preferable to the CLI tool, but it never states when to choose validate_tree over check_figtree or cross_validate, or what to do if no input is supplied. Usage 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.

  1. 21 tool updatesv0.1.0
    • First observedanalyze_taxonomy
    • First observedapply_config
    • First observedcheck_figtree
    • First observedcheck_monophyly
    • First observedclear_annotations
    • First observedcollapse_clade
    • First observedcollapse_group
    • First observedcollapse_rank
    • First observedcolor_clade
    • First observedcross_validate
    • First observedexport_nexus
    • First observedget_environment
    • First observedhighlight_clade
    • First observedrender_tree
    • First observedrun_figtreekit_cli
    • First observedset_clade_font
    • First observedsetup_figtree
    • First observedstyle_tree
    • First observedsummarize_tree
    • First observedtaxonomy_completeness
    • First observedvalidate_tree

TDQS

B3.3/5.0

Scored across 21 tools

Disambiguation3/5

There is meaningful overlap between style_tree and apply_config (both apply a config plus operations and export Nexus), and the collapse_clade/collapse_group/collapse_rank trio requires careful reading to distinguish. run_figtreekit_cli also shadows nearly every other tool as an escape hatch. Descriptions do clarify intent, but an agent must parse them closely to avoid misselection.

Naming Consistency4/5

Most tools follow a clear snake_case verb_noun pattern (get_environment, highlight_clade, collapse_rank, validate_tree). Minor deviations exist: taxonomy_completeness is noun-only, cross_validate is verb_verb, and setup_ vs set_ prefixes coexist. The overall convention is still predictable and readable.

Tool Count3/5

21 tools falls in the borderline 16-25 band and feels heavy for a single MCP server, even for a broad tree-analysis domain. Several areas could be consolidated, such as the three collapse variants and style_tree/apply_config. Each tool has a plausible role, but the surface is larger than ideal.

Completeness4/5

Coverage is strong: setup/check, rendering, annotation add/clear, taxonomy analysis, monophyly checks, cross-validation, summarization, validation, export, styling and a full CLI escape hatch. Minor gaps in direct tree-shape operations (e.g., reroot, prune, rotate) can be worked around via run_figtreekit_cli. The lifecycle for core tree-styling and analysis workflows is well represented.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • F
    license
    C
    quality
    B
    maintenance
    Exposes the NGS360 bioinformatics platform REST API as MCP tools, enabling AI assistants to manage sequencing runs, projects, workflows, and more through natural language.
    82
    -
  • A
    license
    Not graded
    quality
    D
    maintenance
    Exposes the 7-prime spine, 7 κ-bands, and 6 fold operations from foldkit as MCP tools and resources for integration with AI assistants.
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables AI assistants to query, validate, and safely update GEDCOM family-history files through a local MCP server with read-only tools and reviewable changesets.
    1
    MIT