Skip to main content
Glama

cdxml-toolkit-community가 ChemDraw 네이티브 Buchwald-Hartwig 커플링으로 KL-CC-001을 만드는 스킴

플랫폼 지원: 대용 CDXML 및 RKit 워크플로우는 Windows, macOS, Linux에서 실행됩니다. ChemDraw COM 렌더링, ChemScript, Word 또는 PowerPoint에서 편집 가능한 ChemDraw 개브젝트는 라이선스가 있는 데스크톱 ChemDraw 설장과 Windows 호스트가 필ॉ합니디.

실제 편집 가능한 스킴

이 저장소는 스크린샷 전용 결과가 아니라 네이티브 화학 아티팩트를 생산합니다. 아래 반응은 편집 가능한 CDX에서 ChemDraw COM을 통해 직접 내보내졌으며, 그 YAML 설명과 PNG 렌더링도 소스와 함께 보존됩니다:

편집 가능한 CDXML에서 직접 내보낸 2단계 ChemDraw 반응 스킴

YAML 소스 · 편집 가능한 CDXML · 네이티브 PNG · 더 많은 반응 스킴 예제

Related MCP server: Mol-MCP

제공 기능

영역

실질적 성과

화학 근거

nombres, 약어, CAS 번호, 화학식 및 인식된 이미지 후보를 데이스BEIS, ChemScript, OPSIN 또는 DECIMER로 해석합니다.

통제된 구조 작업

분자를 비교하고, 명명된 변환을 적옹하고, 입체화학을 보존하며, MCS 기반 구조 자이를 검사합니다.

BiomDraw 출력

분자를 그리거나 반응 스킴 정리/병합, CDX/CDXML 변환, 네이티브 PNG 그리고 SVG 렌더링을 제공합니다.

Office 워크플로

편집 가능한 ChemDraw OLE 객체를 awness и PowerPoint 및 Word에서 추출, 대체, 일괄 임베디드합니다.

실험 워크플로

ELN 내보내기, SciFindder RDF, RDF, LCMS/NMR 보고서를 파싱하고 구조화된 랩 노트를 작성합니다.

에이전트 서비스

로컬 또는 인증된 Streamable HTTP를 통해 신할 수 있는 원격 컴퓨터에서 실행할 수 있습니다.

시작하기

요구 사항: 64-비트 Python 3.10–3.13. 대 CDXML과 RDKit 작업은 ChemDraw 없이 실행됩니다. 네이티브 렌더링, ChemScript, 편집 가능한 Office 객체는 Windows + 라이선스 데스크톱 ChemDraw 설직 필요합니다. Python 3.14는 아직 지원되지 않습니다.

conda create -n cdxml python=3.12 pip -y
conda activate cdxml

git clone https://github.com/ZiChenWang114514/cdxml-toolkit-community.git
Set-Location .\cdxml-toolkit-community

# Both distributions expose the cdxml_toolkit import package.
pip uninstall -y cdxml-toolkit
pip install -e ".[all]"

# Read-only environment and capability report.
cdxml-doctor --no-tests

기본 설치에는 휴대용 ChemSCXML, RDKit 및 MCP 런타임이 포함됩니다. 옵션 그룹은 windows, office, chemscript, analysis, image, decimer, opsin, http, all, dev입니다. 체크아웃이 필요 없는 경우 현재 커뮤니티 소스를 직접 설치합니다:

pip install "cdxml-toolkit-community[all] @ git+https://github.com/ZiChenWang114514/cdxml-toolkit-community.git@main"

cdxml-doctor --no-tests는 뮤신을 변궁하지 않습니다. ChemDraw를 감지하고 호환되는 ChemScript 환경을 인터랙티브하게 준비하려면 다음을 실행합니다:

cdxml-doctor --no-tests --configure-chemscript
cdxml-doctor --json

ChemScript는 옵션입니다. OPSIN은 Java를 사용할 수 있는 경우에 오프라인 IUPAC 이름 해석을 제공합니다. wheel에는 JRE가 번들되지 않습니다; 런타임은 나중에 JAVA_HOME 및 PATH의 java를 확인합니다. 사전 승인된 로컬 아카이브는 명시적인 무결성 정보와 함께 설치될 수 있습니다:

$env:CDXML_TOOLKIT_JRE_ZIP = "C:\installers\temurin-jre.zip"
$env:CDXML_TOOLKIT_JRE_SHA256 = "approved sha256"
cdxml-doctor --no-tests

설치 전에 아카이브 크기, 압축 해제 후 크기, 경로, 링크, 선택적 SHA-256 체크가 수행됩니다.

에이전트 연결하기

codex 프로필은 모든 35개 도구를 노출합니다. 로컬 stdio 서버를 직접 시작합니다:

cdxml-mcp --profile codex

Codex에 서버를 %USERPROFILE%\.codex\config.toml에 추가하고 Python 경로를 해당 cdxml 환경의 인터후리터로 바꿉니다:

[mcp_servers.chemdraw]
command = "C:\\Users\\YOU\\miniconda3\\envs\\cdxml\\python.exe"
args = ["-m", "cdxml_toolkit.mcp_runtime", "--profile", "codex"]
startup_timeout_sec = 120
tool_timeout_sec = 600

에이전트를 다시 시작한 후 다음을 시도합니다:

Resolve aspirin, draw it as CDXML, and render a PNG preview.

%APPDATA%\Claude\claude_desktop_config.json의 mcpServers 아래에 서버를 추가합니다:

{
  "mcpServers": {
    "cdxml-toolkit": {
      "command": "C:\\Users\\YOU\\miniconda3\\envs\\cdxml\\python.exe",
      "args": ["-m", "cdxml_toolkit.mcp_runtime", "--profile", "codex"]
    }
  }
}

동일한 프로세스 기반 설정은 다른 MCP 호환 에이전트에서도 작동합니다.

클라이언트가 프로젝트 지침을 지원하면 CLAUDE.md를 에이전트 작업 공간에 붙여넣습니다. 이 파일은 에이전트가 구조 문자열을 임의로 생성하지 않고, 도구에서 분자 구조를 가져오고, 이미지에는 OCSR을 사용하며, 화학 의미를 보존하고, 변환을 검증함을 알려주게 됩니다.

런타임 작동 방식

런타임의 주요 속성:

  • 도구 호출은 구성 가능한 하드 타임아웃과 구조화된 오류를 갖는 하위 프로세스 워커에서 실행됩니다.

  • ChemDraw, Word, PowerPoint 자동화는 직렬화된 네이티브 리소스 조정을 공유합니다.

  • 결과물을 생성하는 도구는 아티팩트를 검증하고 기존 파일을 의도치 않게 교체하지 않습니다.

  • 메트릭은 도구 아규먼트나 분자 내용을 제외한 요청 수, 지속 시간, 시간 초과, 워커 오류, 대기열 길이를 기록합니다.

  • get_toolkit_capabilities는 에이전트가 작업 흐름을 선택하기 전에 현재 사용 가능한 로컬 기능을 보고합니다.

도구 프로필

선택 노이즈를 줄이기 위해 가장 유용한 크기로 프로필을 선택하세요:

프로필

도구

초점

core

16

호환 핵심 도구 및 기능 탐색

office

21

Office 검사, 대체, 템플릿, 일괄 삽입

analysis

20

실험 검색, LCMS 계열, 실험 노트, SciFinder RDF

chemscript

20

분자 비교 및 ChemScript SDK 통제 접근

codex

35

완전한 로컬 및 원격 커넥션

생성된 MCP tool reference와 JSON 스키마는 정확한 라이브 시그니처를 포함합니다. CI는 두 파일이 일치하는지 확인합니다.

Streamable HTTP

stdio는 여전히 로컬 기본값입니다. http 추가 설치 후, active Windows 워크스테이션은 신뢰하는 원격 컴퓨터에 연결할 수 있습니다:

$env:CHEMDRAW_MCP_HTTP_API_KEY = "generate-a-long-random-value"
cdxml-mcp --transport streamable-http --host 0.0.0.0 --port 8029 `
  --allowed-host chemdraw-host.example:8029 `
  --allowed-origin https://trusted-client.example

리모트 바인딩은 볼러 키와 명시적인 호스트 목록이 필요합니다. /health에는 분자 구조가 없습니다; /metrics는 원격 접근이 가능하면 인증합니다.

DECIMER 이미지 업로드는 기본적으로 비활성화됩니다. 원격 인식은 confirm_upload=true로 지정해야 하며, 페이로드가 이미지로 디코딩에 실패하는지 검증하고 요청과 응답 의미를 강제합니다.

명령줄

명령어

용도

cdxml-mcp

완전한 MCP 런타임; 기본 35게 도구 codex 프로필

cdxml-mcp-core

호환 15개-도구 코어 서버

cdxml-doctor

읽기 전용 진단, 테스트, ChemScript 명시적 설정

cdxml-render

JSON, YAML 또는 컴팩트 텍스트를 CDXML로 렌더링

cdxml-image

CDXML을 PNG 또는 SVG로 렌더링

cdxml-merge / cdxml-layout

스킴 병합 또는 반응식 콘텐츠 정리

cdxml-ole

PPTX 또는 DOCX에 편집 가능한 ChemDraw 개체 임베드

cdxml-lcms / cdxml-nmr

기기 보고서 파싱

cdxml-mcp-docs

Markdown 및 JSON 도구 참조 재생성

스킴 렌더링은 YAML, 반응 JSON, 컴팩트한 텍스트와 형식(예: showcase 카탈로그 참조)을 지원합니다. 자세한 내용은 쇼케이스 카탈로그를 참조하세요.

개발

python -m pip install -e ".[dev,windows,office,analysis,image]"
python -m pytest -m "not network" -q
python -m build
python -m twine check dist/*

호스트CI: Python 3.10–3.13, MCP SDK 1.x · 2.x, 포터블 테스트, 분산 빌드를 검증합니다. 네이티브 ChemDraw, ChemScript, Word, PowerPoint 시나리오는 라이선스된 Windows 워크스테이션에서 점검합니다.

변경하거나 릴리스하기 전에 기여 가이드, 보안 정책, 그리고 유지 관리 가이드를 읽으세요.

커뮤니티 관리

이 리포지토리는 leehiufung911/cdxml-toolkit의 후속 버전입니다. 배포판 명은 cdxml-toolkit-community이며, 호환되는 Python пакеإt와는 cdxml_toolkit입니다.

이 원저 프로젝트는 유기화학 박사인 Hiu Fung Kevin Lee에 의해 지휘되었으며, Claude Code(Opus 4.6)를 사용하여 오픈소스로 빌드되고 검증된 것으로 기록되어 있습니다.

Available Tools

35 tools
analyze_lcms_seriesAnalyze Lcms SeriesC

Analyze a chronological series of standard LCMS PDF reports.

ParametersJSON Schema
NameRequiredDescriptionDefault
filesYes
output_pathNo
mz_toleranceNo
rt_toleranceNo
trend_thresholdNo
ignore_instrumentNo

TDQS

C2.1/5.0
Behavior1/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It fails to mention what 'analyze' entails—whether it produces a summary, modifies files, requires specific permissions, or any side effects. The phrase 'chronological series' hints at ordering but does not describe the analysis logic or output format. This is a significant gap for a non-trivial tool.

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

Conciseness2/5

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

The description is a single sentence, which is technically concise, but it is significantly under-specified rather than appropriately concise. It lacks necessary details about the tool's behavior and parameters, making it more a placeholder than a well-structured definition. The sentence is front-loaded with the verb, but that cannot compensate for the missing substance.

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

Completeness1/5

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

Given the tool's complexity (6 parameters, no annotations, no output schema), the description is woefully incomplete. It does not explain the analysis workflow, expected inputs, output format, or how parameters influence behavior. An agent would have no idea what to expect or how to invoke this tool correctly beyond providing a list of files.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate for the six parameters. It mentions 'standard LCMS PDF reports' but does not clarify the purpose of 'files', 'output_path', 'mz_tolerance', 'rt_tolerance', 'trend_threshold', or 'ignore_instrument'. Without any parameter explanation, agents cannot infer correct usage from the description alone.

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

Purpose4/5

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

The description clearly states the verb 'Analyze' and the resource 'a chronological series of standard LCMS PDF reports'. This is specific enough to distinguish it from generic parsing tools, though it does not name an explicit alternative or sibling. The purpose is understandable but not fully differentiated from similar tools like parse_analysis_file or discover_experiment_files.

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 offers no guidance on when to use this tool versus alternatives, no prerequisites, no exclusions, and no context about the intended workflow. It merely states what it does without indicating scenarios where it is preferred or where another tool (e.g., parse_analysis_file for single files) would be more appropriate.

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

assemble_lab_bookAssemble Lab BookC

Assemble a deterministic lab-book entry from experiment files.

ParametersJSON Schema
NameRequiredDescriptionDefault
input_dirYes
experimentNo
output_pathNo
tracking_jsonNo

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. The word 'deterministic' hints at output consistency, but the description fails to mention side effects (e.g., file creation at output_path), required permissions, or behavior on missing files. This is a significant gap for a tool with multiple optional parameters.

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

Conciseness2/5

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

The description is a single concise sentence, which is good for brevity, but it is too under-specified for a tool with four parameters and no other metadata. It front-loads the core purpose but omits essential details that would justify its length; it is concise but not appropriately informative.

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

Completeness1/5

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

Given the complexity (4 parameters, 1 required, no annotations, no output schema), the description is grossly inadequate. It does not explain what constitutes a lab-book entry, how experiment files are discovered, what the optional parameters do, or what the return value looks like. This is not complete enough for an agent to call it correctly.

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

Parameters1/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 explain parameter meanings, but it does not mention any parameters at all. The agent gets no insight into what input_dir, experiment, output_path, or tracking_json represent or how they influence the assembly, making the tool nearly unusable without additional context.

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

Purpose4/5

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

The description clearly states the tool assembles a lab-book entry from experiment files, with 'deterministic' adding specificity about output behavior. However, it does not explicitly distinguish it from sibling tools like format_lab_entry, which might also generate lab-related content, so it only partially differentiates.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, nor does it mention prerequisites or exclusions. It simply states what it does without context, leaving the agent to guess about appropriate invocation scenarios.

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

batch_compare_moleculesBatch Compare MoleculesC

Compare up to 256 molecule pairs with one ChemScript bridge session.

ParametersJSON Schema
NameRequiredDescriptionDefault
pairsYes
n_bitsNo
radiusNo
fingerprintNomorgan

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It mentions 'one ChemScript bridge session' implying an efficiency aspect, but does not disclose side effects, prerequisites, error behavior, rate limits, or whether the operation is read-only. The agent is left without critical context for a tool that likely interacts with an external SDK.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no filler words. It delivers the core purpose and a key constraint (the 256-pair limit and single session) efficiently, earning full marks for conciseness and structure.

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

Completeness1/5

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

For a batch tool with four parameters, no output schema, and no annotations, this one-liner is grossly incomplete. It omits parameter semantics, output format, error handling, and any prerequisites. An agent cannot correctly call this tool without additional documentation.

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

Parameters1/5

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

Schema description coverage is 0% and the description does not explain any of the four parameters except implicitly referring to 'molecule pairs' (for the 'pairs' parameter). It gives no information about n_bits, radius, or fingerprint, which are essential for controlling the comparison. The description fails to compensate for the lack of schema documentation.

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

Purpose4/5

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

The description states a clear action ('Compare') with a specific resource ('molecule pairs') and a batch scope ('up to 256'), which distinguishes it from the sibling 'compare_molecules' (singular). However, it does not specify the type of comparison (e.g., structural similarity, identity), leaving the exact nature of the operation slightly ambiguous.

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 context is implied by the name and the phrase 'batch' and 'up to 256 molecule pairs', suggesting it is for multiple comparisons. However, there is no explicit statement about when to use this versus the singular 'compare_molecules' tool, and no exclusions or alternative guidance are provided.

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

batch_embed_cdxml_in_officeBatch Embed Cdxml In OfficeC

Create PPTX or DOCX containing editable ChemDraw OLE objects.

ParametersJSON Schema
NameRequiredDescriptionDefault
margin_ptNo
cdxml_pathsYes
output_pathYes

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states that it 'creates' files, but does not mention whether it overwrites existing files, requires a specific environment (e.g., Office or ChemDraw), handles multiple inputs, or any side effects. For a file-generation tool, this is a significant gap.

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

Conciseness3/5

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

The description is a single sentence with no fluff, which is efficient. However, it is under-specified for a tool that creates complex office documents with OLE objects, and the brevity sacrifices necessary context. It earns a middle score because it is concise but not fully informative.

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

Completeness1/5

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

Given no output schema, no annotations, and zero parameter documentation, the description is far from complete. It omits runtime behavior, output specifications, handling of multiple files (despite the batch name), and potential error cases. An agent cannot reliably predict the tool's behavior from this one-liner.

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

Parameters1/5

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

Schema coverage is 0%, and the description does not explain any of the three parameters (cdxml_paths, output_path, margin_pt). It adds no meaning beyond what the parameter names alone suggest, and it fails to compensate for the lack of schema descriptions, leaving parameter semantics entirely to inference.

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

Purpose4/5

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

The description states a clear verb ('Create') and resource ('PPTX or DOCX containing editable ChemDraw OLE objects'), which identifies the action and output format. However, it does not distinguish itself from the sibling tool 'embed_cdxml_in_office', and it relies on the tool name to convey batch processing, making it clear but not fully differentiated.

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

Usage Guidelines2/5

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

The description provides no guidance on when this tool should be used over alternatives, such as the singular 'embed_cdxml_in_office' or other office-related tools. It does not mention criteria like batch vs. single-file needs, prerequisites, or when not to use it, leaving the agent without routing context.

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

clean_scheme_layoutClean Scheme LayoutC

Clean an existing CDXML reaction layout without changing the source file.

ParametersJSON Schema
NameRequiredDescriptionDefault
approachNochemdraw_mimic
input_pathYes
output_pathNo
render_previewNo

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 full responsibility. It states the tool does not change the source file, which is a useful behavioral note, but it does not disclose what 'clean' does, whether it produces an output file, or any side effects. This is minimal for a tool with a mutating-sounding action.

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

Conciseness4/5

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

The description is a single, efficient sentence with no fluff. It front-loads the main purpose and adds the key constraint. It is concise, though it sacrifices needed detail for brevity.

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

Completeness2/5

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

With four parameters, no schema descriptions, no output schema, and no annotations, this tool demands a richer description. The one-liner does not explain the cleaning approach, output handling, or preview behavior. The agent lacks sufficient information to invoke it correctly beyond providing input_path.

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. It only implicitly references input_path via 'existing CDXML reaction layout' but does not explain approach, output_path, or render_preview. The agent gets no guidance on what these parameters mean or how they affect behavior.

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

Purpose4/5

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

The description clearly states the action ('clean') and the resource ('existing CDXML reaction layout'), and adds the distinguishing constraint 'without changing the source file.' This is specific and distinguishes it from siblings like polish_reaction_scheme, though it does not name 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 Guidelines2/5

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

The description gives no indication of when to use this tool versus the many sibling tools (e.g., polish_reaction_scheme, render_scheme). It does not provide context, preconditions, or exclusions, leaving the agent to infer usage.

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

compare_moleculesCompare MoleculesB

Compare two molecule representations using ChemScript identity and RDKit Tanimoto fingerprints.

ParametersJSON Schema
NameRequiredDescriptionDefault
n_bitsNo
radiusNo
molecule_aYes
molecule_bYes
fingerprintNomorgan

TDQS

B3.3/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 full responsibility for behavioral disclosure. The description mentions the internal comparison methods but does not state whether the operation is read-only, what the return value looks like (similarity score, boolean, or something else), whether errors can occur on invalid input, or any side effects. This lack of behavioral detail is a significant gap.

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

Conciseness5/5

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

The description is a single, concise sentence with no fluff. The core action and methods are front-loaded, making it immediately scannable. There is no redundant or misleading information.

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?

Given the tool has 5 parameters, no output schema, and no parameter descriptions, the description is far from complete. An agent needs to know what each parameter does, the expected input format, and what the result looks like to call this tool correctly. The description only provides a high-level goal without bridging these gaps, making it inadequate for a tool with this complexity.

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?

The schema description coverage is 0%, so the description must compensate. The description mentions 'Tanimoto fingerprints', which gives a hint about the 'fingerprint' parameter (likely the fingerprint type), but it does not explain 'n_bits' or 'radius' (which are common fingerprint parameters) or the expected format of 'molecule_a' and 'molecule_b'. Agents are left guessing about the meaning of these parameters.

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

Purpose5/5

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

The description clearly states the action ('Compare two molecule representations') and specifies the methods ('ChemScript identity and RDKit Tanimoto fingerprints'). It distinguishes the tool from siblings like batch_compare_molecules (which presumably handles multiple comparisons) and other molecule-processing tools. The verb+resource combination is specific and unambiguous.

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 usage is implied: use this tool when you need to compare exactly two molecules. However, there is no explicit guidance about when to use this versus alternatives (e.g., batch_compare_molecules for multiple comparisons, or other analysis tools). The description does not mention when not to use it or any prerequisites like input format requirements.

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

convert_cdx_cdxmlA

Convert bidirectionally between CDX (binary) and CDXML (XML) formats.

Direction is detected from the file extension:

  • .cdx input → .cdxml output

  • .cdxml input → .cdx output

Uses available backends in order: ChemDraw COM (best fidelity, Windows) → pycdxml (pure Python, partial support) → OpenBabel.

ChemDraw COM requires ChemDraw to be installed and closed before running.

Args: input_path: Path to .cdx or .cdxml file. output_path: Output file path. If not given, same directory as input with the swapped extension (e.g. foo.cdx → foo.cdxml).

Returns: Dict with keys: ok, input, output (absolute path to written file). Returns {ok: False, error: "..."} if conversion fails.

Safety override: Convert CDX/CDXML through a validated no-overwrite staging file.

ParametersJSON Schema
NameRequiredDescriptionDefault
input_pathYes
output_pathNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It thoroughly describes the conversion logic (extension detection), backend selection and prerequisites, the return dict format including error handling, and even a safety override for no-overwrite staging. This leaves little to inference and fully informs the agent of expected behavior and side effects.

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

Conciseness4/5

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

The description is well-structured with clear sections and front-loaded purpose. It is slightly longer than minimal but every sentence adds value: backend details, prerequisites, return format, and safety. The safety override line, while specific, is useful context. It could be trimmed by omitting the explicit 'Returns' dict details, but it remains efficient and readable.

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

Completeness5/5

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

Given the tool's complexity (backend selection, extension detection, output defaults, error handling), the description covers all necessary aspects. It explains the return dict even though no output schema exists, making it fully complete for an agent to invoke correctly. No critical information is missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must fully compensate. The Args section explains both parameters: input_path (a path to .cdx or .cdxml) and output_path (optional, with detailed default behavior: same directory, swapped extension). This adds essential meaning beyond the bare schema and clarifies the exact usage of each parameter.

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

Purpose5/5

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

The description clearly states the tool converts bidirectionally between CDX and CDXML formats, with the direction determined by file extension. This is a specific verb-resource pair that distinguishes it from sibling tools like render_cdxml_files (rendering) or extract_cdxml_from_office (extraction), leaving no ambiguity about its core function.

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

Usage Guidelines4/5

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

The description explains when the tool is used (conversion) and provides backend selection details, including the requirement that ChemDraw COM needs ChemDraw installed and closed. It does not explicitly exclude alternative tools, but the purpose is clear enough that an agent would know to use this for CDX/CDXML conversion. It also notes the backend fallback order, offering practical guidance on expected behavior.

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

diagnose_runtimeDiagnose RuntimeC

Report local runtime capabilities; native probes are explicit and temporary.

ParametersJSON Schema
NameRequiredDescriptionDefault
run_native_probeNo
run_office_probeNo
run_chemscript_probeNo

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations, the description must disclose behavioral traits. It adds that 'native probes are explicit and temporary,' which hints at non-persistent side effects, but it doesn't explain what this means in practice (e.g., whether probes spawn processes, if they are safe, or the nature of the report). Most behavioral details are absent.

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

Conciseness2/5

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

The description is extremely brief, comprising a single sentence. While there is no fluff, it is under-specified and fails to provide essential information about the probes or the report format. It is concise but not appropriately sized for the tool's complexity.

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

Completeness1/5

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

This is a diagnostic tool with three parameters, no annotations, and no output schema. The description does not explain what the probes do, what the report contains, or how the results should be interpreted. It is severely incomplete for an agent to call it correctly and use its results.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate by explaining the meanings of run_native_probe, run_office_probe, and run_chemscript_probe. It does not mention any parameters or their effects, leaving the agent without any clue what these booleans control.

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

Purpose4/5

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

The description states the tool reports local runtime capabilities, which is a clear verb and resource. It implicitly distinguishes from siblings like get_toolkit_capabilities by focusing on runtime rather than toolkit capabilities. However, it doesn't explicitly mention the three probe types (native, office, chemscript) that the parameters suggest, so specificity is slightly lacking.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no preconditions, and no context such as using it to check runtime before running other tools. It only states its purpose, leaving the agent to infer when to call it.

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

discover_experiment_filesDiscover Experiment FilesC

Discover and classify files belonging to one experiment.

ParametersJSON Schema
NameRequiredDescriptionDefault
input_dirYes
experimentNo
output_pathNo

TDQS

C2.4/5.0
Behavior2/5

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

No annotations are provided, so the description must fully disclose behavior. It only says 'discover and classify' without indicating side effects, whether it writes files (output_path suggests possible), permission requirements, or limitations. This is insufficient for an agent to understand the tool's impact or safety profile.

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

Conciseness4/5

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

The description is a single, concise sentence that front-loads the purpose with no wasted words. It is efficiently structured and easy to parse. However, it is so terse that it verges on under-specification, but as purely a conciseness measure, it earns a high score.

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

Completeness1/5

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

With three parameters, no output schema, and no annotations, the description must provide substantial context but offers almost none. It does not state what the tool returns, how classification works, or when to use it. An agent would be unable to call this tool correctly without additional documentation, making it severely incomplete for its complexity.

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

Parameters1/5

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

Schema description coverage is 0%, and the description gives no explanation of the parameters (input_dir, experiment, output_path). The agent must infer meaning solely from names, which are not self-explanatory (e.g., what format for experiment? What does output_path control?). The description adds zero value beyond the schema fields.

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

Purpose4/5

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

The description states the tool discovers and classifies files belonging to one experiment, providing a clear verb and resource. It is not a tautology and is distinct from siblings like parse_analysis_file or search_compound, though it does not explicitly differentiate itself. It lacks specifics on file types or classification scheme, but the core purpose is understandable.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. There is no mention of prerequisites, context, or exclusions. An agent cannot determine if this tool is appropriate for a given task compared to similar file-related operations, so it fails to support tool selection.

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

draw_moleculeA

Render a single molecule to a standalone CDXML document.

Takes a molecule dict (at minimum {"smiles": "..."}) and generates a self-contained CDXML string with 2D coordinates in ACS Document 1996 style (BondLength=14.40, Arial 10pt). Optionally places a text label below the structure using the "label", "name", or "iupac_name" field (in that order).

IMPORTANT: Do NOT construct {"smiles": "..."} with hand-edited SMILES. Always get mol_json from another tool (resolve_name, modify_molecule, parse_reaction, etc.). If you need to edit a SMILES, use modify_molecule(operation="set_smiles") first — it gives you an MCS diff to verify the edit was correct before drawing.

Args: mol_json: Molecule dict with at least {"smiles": "..."}. Optional display fields: "label" (used verbatim), "name", "iupac_name". Should come from another tool's output, not hand-constructed. output_path: If given, also write CDXML to this file path.

Returns: Dict with keys: ok, cdxml (CDXML document string), and output_path if a path was specified. Returns {ok: False, error: "..."} on failure.

Safety override: Draw a molecule through a validated no-overwrite staging file.

ParametersJSON Schema
NameRequiredDescriptionDefault
mol_jsonYes
output_pathNo

TDQS

A5/5.0
Behavior5/5

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

With no annotations provided, the description carries full burden. It discloses output format (CDXML string), return dict keys (ok, cdxml, output_path), error handling ({ok: False, error: "..."}), and a safety note about no-overwrite staging. This transparently covers all behavioral aspects relevant to an agent.

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

Conciseness5/5

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

The description is well-structured with a leading summary, clear Args/Returns sections, and critical warnings front-loaded. Each sentence provides necessary information without redundancy, balancing depth with conciseness.

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

Completeness5/5

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

Given the complexity of the task (molecule rendering, CDXML output, safety considerations), the description is complete. It covers input requirements, output structure, error cases, sources for valid mol_json, and even a safety override note, leaving no critical information missing.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It fully explains mol_json (minimum required SMILES, optional fields label/name/iupac_name, and the directive to source from other tools) and output_path (optional file write). Every parameter's meaning and constraints are clarified.

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

Purpose5/5

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

The description clearly states the specific action and resource: 'Render a single molecule to a standalone CDXML document,' and differentiates from sibling tools like render_scheme and render_to_png by specifying output as CDXML with ACS style. The verb 'render' and resource 'molecule' are unambiguous.

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

Usage Guidelines5/5

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

Provides explicit usage rules: 'Do NOT construct {"smiles": "..."} with hand-edited SMILES. Always get mol_json from another tool...' and explicitly names the alternative (modify_molecule) for editing SMILES, along with a rationale (MCS diff verification). This fully informs when to use and when not to use the tool.

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

embed_cdxml_in_officeA

Embed a CDXML file as an editable ChemDraw OLE object in PPTX or DOCX.

Converts CDXML → CDX + EMF preview via ChemDraw COM, builds a CFB OLE compound file, and injects it into a PPTX slide or DOCX paragraph as a double-clickable, editable ChemDraw object.

Requires: ChemDraw COM (Windows, ChemDraw 16+), python-pptx or python-docx. ChemDraw must be installed and closed before calling this tool.

The output format (.pptx or .docx) is detected from office_path extension. If office_path does not exist, a new file is created.

Args: cdxml_path: Path to the CDXML file to embed. office_path: Path to the target .pptx or .docx file. Created if it does not exist. output_path: Output file path. If not given, writes to office_path (modifies in place via temp file).

Returns: Dict with keys: ok, input_cdxml, output (absolute path to written Office file), format ("pptx" or "docx"), num_objects_embedded. Returns {ok: False, error: "..."} if embedding fails.

Safety override: Create a new validated PPTX or DOCX and reject all existing targets.

ParametersJSON Schema
NameRequiredDescriptionDefault
cdxml_pathYes
office_pathYes
output_pathNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries full behavioral disclosure. It reveals the conversion process (CDXML → CDX + EMF), the OLE compound file construction, in-place modification behavior when output_path is omitted, file creation when office_path doesn't exist, and the exact return dict structure including error handling. The 'Safety override' note adds further transparency about operational constraints.

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 thorough, structured with an Args/Returns section, and front-loaded with the core purpose. It is longer than minimal but every sentence adds necessary detail (prerequisites, behavior, return schema, safety note) without redundancy. Slight verbosity in the explanatory first paragraph could be trimmed, but it remains well-organized.

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

Completeness5/5

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

For a tool with non-trivial complexity (OLE embedding, COM dependency, multiple output modes), the description covers prerequisites, input/output behavior, error conditions, return format, and even a safety override. It leaves no critical ambiguity for an agent to resolve—everything needed for correct invocation and result interpretation is present.

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

Parameters5/5

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

The input schema provides only types and names with zero descriptions (0% coverage). The description fully compensates by explaining each parameter: cdxml_path is the CDXML source, office_path is the target PPTX/DOCX (created if missing, format detected from extension), and output_path is optional with default to office_path. This is significantly more informative than the schema alone.

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

Purpose5/5

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

The description states a precise, specific action: embedding a CDXML file as an editable ChemDraw OLE object into PPTX or DOCX. It names the input, output, and conversion pipeline (CDXML → CDX + EMF via ChemDraw COM). It clearly distinguishes from sibling tools like extract_cdxml_from_office (reverse operation) and batch_embed_cdxml_in_office (batch variant) by its singular-target nature.

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

Usage Guidelines4/5

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

The description gives explicit prerequisites (ChemDraw COM, Windows, ChemDraw 16+, python-pptx/docx) and a critical precondition ('ChemDraw must be installed and closed'), which is essential for correct invocation. However, it does not explicitly state when to use this tool versus batch_embed_cdxml_in_office or other alternatives—though the singular-target behavior is implied by the name and description.

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

execute_chemscript_sdkExecute Chemscript SdkC

Execute a declarative ChemScript SDK program in an isolated Python.NET process.

ParametersJSON Schema
NameRequiredDescriptionDefault
programYes
max_itemsNo
allow_file_ioNo
allow_overwriteNo
allow_unsafe_interopNo

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for disclosing behavior. It mentions 'isolated Python.NET process', which hints at sandboxing, but fails to disclose side effects (despite parameters like allow_file_io and allow_overwrite), error handling, resource limits, or the nature of the result. The description is too sparse to give an agent confidence in what actually happens when the program runs.

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

Conciseness2/5

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

The description is a single sentence and is indeed concise, but it is under-specified for the complexity of the tool. It sacrifices necessary detail for brevity, making it inappropriately minimal given the absence of schema descriptions and annotations. It is front-loaded with the purpose, but the anemic content does not earn conciseness credit.

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

Completeness1/5

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

This tool has 5 parameters, no output schema, no annotations, and 0% schema description coverage. The one-sentence description fails to explain how to construct the program array, what the boolean flags do, what the return value looks like, or any operational context. An agent cannot safely invoke this tool without additional external knowledge, so it is far from complete.

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

Parameters1/5

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

Schema description coverage is 0% for all five parameters, and the description adds no explanation of any parameter. The 'program' array is only described as 'declarative ChemScript SDK program' but its structure, possible entries, and required shape are unexplained. The other parameters (max_items, allow_file_io, allow_overwrite, allow_unsafe_interop) are completely undocumented in both schema and description, forcing an agent to guess their semantics.

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

Purpose5/5

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

The description uses a specific action verb ('Execute') with a clear resource ('a declarative ChemScript SDK program') and an execution context ('in an isolated Python.NET process'). It differentiates from siblings like 'inspect_chemscript_sdk' which is about inspection rather than execution, making it unambiguous.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives, no mention of prerequisites, and no conditions that would make this tool preferable. It does not name related tools such as inspect_chemscript_sdk or explain the differences in usage scenarios. The agent is left to infer context from the name alone.

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

extract_cdxml_from_officeA

Extract embedded ChemDraw objects from a PPTX, DOCX, XLS, or XLSX file.

Office files (PPTX/DOCX/XLSX) are ZIP archives that may contain ChemDraw OLE objects as binary blobs. XLS files are OLE2 compound documents with embedded ChemDraw objects stored in MBD* sub-storages. This tool extracts every ChemDraw object, converts it to CDXML, and writes the files to output_dir.

Requires: olefile. CDX→CDXML conversion uses available backends.

Args: file_path: Path to a .pptx, .docx, .xlsx, or .xls file. output_dir: Directory for extracted CDXML files. Default: a folder named "_chemdraw/" next to the input file.

Returns: Dict with keys: ok, input, output_dir, objects (list of: source_path, cdxml_output, cdx_output, error for each extracted object). Returns {ok: False, error: "..."} if extraction fails entirely.

Safety override: Extract every object transactionally; publish nothing on partial failure.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
output_dirNo

TDQS

A4.5/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It explains the extraction process, the conversion to CDXML, output directory behavior, the return dictionary structure, and failure semantics ('publish nothing on partial failure'). This exceeds what would be expected for a simple extraction tool.

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

Conciseness4/5

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

The description is relatively long but well-structured into logical sections (purpose, technical detail, requirements, args, returns, safety). The purpose is front-loaded, and every sentence contributes value (e.g., file format internals, transactionality). A minor deduction for verbosity that could be tightened.

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

Completeness5/5

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

The description is complete for an extractor tool with no output schema. It details supported inputs, conversion backends, dependencies (olefile), output directory default, return keys, and failure handling. An agent has everything needed to call it correctly without additional inference.

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

Parameters5/5

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

Schema description coverage is 0%, yet the description fully compensates by specifying the file path types ('a .pptx, .docx, .xlsx, or .xls file') and the output_dir default ('a folder named "<basename>_chemdraw/" next to the input file'). This adds semantic meaning beyond the bare schema field names.

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

Purpose5/5

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

The description clearly states a specific verb ('extract'), a specific resource ('embedded ChemDraw objects from a PPTX, DOCX, XLS, or XLSX file'), and differentiates from sibling tools like convert_cdx_cdxml (file format conversion) and extract_structures_from_image (image extraction). The scope is unambiguous.

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

Usage Guidelines4/5

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

The description scopes usage to office files and explains the underlying storage (ZIP vs OLE2) for each format, which helps an agent understand when this tool applies. It does not explicitly name alternatives to avoid, but the format-specificity combined with sibling tool names provides adequate guidance.

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

extract_structures_from_imageA

Extract chemical structures from an image using DECIMER.

Takes a PNG, JPG, or PDF image and returns SMILES + confidence scores + bounding boxes for every detected chemical structure. Segments the image into individual structure regions automatically. Optionally detects nearby text labels via OCR.

DECIMER models download on first run (~570 MB to ~/.data/DECIMER-V2/). Requires: DECIMER, opencv-python, and optionally pytesseract/easyocr.

The returned SMILES should be passed through resolve_name or modify_molecule to verify and enrich — DECIMER SMILES may not be canonical and can have low confidence for complex structures.

Args: image_path: Path to PNG, JPG, or PDF file. detect_labels: Attempt OCR detection of text labels near structures. Requires pytesseract or easyocr; labels are null without an OCR library. Default True.

Returns: Dict with keys: ok, image_path, structures (list of: smiles, confidence in [0,1], bbox [x0,y0,x1,y1], label or null). Returns {ok: False, error: "..."} if DECIMER is not installed or extraction fails.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_pathYes
detect_labelsNo

TDQS

A4.7/5.0
Behavior5/5

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

With no annotations provided, the description carries the full behavioral burden and delivers thoroughly. It discloses that DECIMER models download on first run (with size and path), lists required dependencies, specifies that OCR is optional and labels default to null without libraries, details the return dictionary shape including error handling ({ok: false, error: ...}), and notes that SMILES may not be canonical or low-confidence for complex structures. This is exemplary transparency.

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 structured with clear sections (intro, requirements, usage, args, returns). It front-loads the core purpose and input/output types. While it is somewhat lengthy, every sentence adds essential information (dependencies, error behavior, downstream hints), so it is appropriately sized rather than bloated. A minor improvement would be splitting the 'Requires' note into a dedicated section for scannability.

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

Completeness5/5

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

For a tool with only 2 parameters and no output schema, the description covers all necessary context: input formats, exact output structure, error handling, dependencies, model download behavior, and downstream verification advice. An agent has complete information to decide whether to call this tool and how to interpret its results. Nothing critical is missing.

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 fully explain parameters, and it does. image_path is defined as 'Path to PNG, JPG, or PDF file,' and detect_labels is explained with its behavior, dependencies, and default (True). The description also explains what each parameter affects in the output, enabling correct argument values without schema assistance.

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

Purpose5/5

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

The description opens with a precise verb-resource-method statement: 'Extract chemical structures from an image using DECIMER.' It names the exact input formats and outputs, making the tool's purpose unambiguous and distinct from siblings like extract_structures_via_decimer_api (which implies a different execution mode) and other image/format converters.

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

Usage Guidelines4/5

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

The description implies usage context by specifying input types (PNG, JPG, PDF) and mentions DECIMER requires models to download, signaling a local execution setting. It does not explicitly contrast with extract_structures_via_decimer_api, but it does route downstream use by advising to pass results through resolve_name or modify_molecule for verification, which provides actionable guidance on when to use this tool in a workflow.

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

extract_structures_via_decimer_apiExtract Structures Via Decimer ApiC

Upload an image to DECIMER only when confirm_upload is explicitly true.

ParametersJSON Schema
NameRequiredDescriptionDefault
hand_drawnNo
image_pathYes
output_pathNo
confirm_uploadNo
approved_originNo
approved_sha256No
timeout_secondsNo

TDQS

C2/5.0
Behavior2/5

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

With no annotations, the description carries the full burden. It discloses a behavioral constraint (the confirm_upload condition) but says nothing about side effects, output format, prerequisites, or reversibility. The upload-only framing is misleading about the actual extraction functionality.

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

Conciseness2/5

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

The single sentence is concise but under-specified. It doesn't front-load essential information about what the tool does or how to use it. The sentence reads like a guardrail instruction, not a tool definition, so it is under-specification rather than effective conciseness.

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

Completeness1/5

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

For a tool with 7 parameters, no output schema, and no annotations, this description is grossly incomplete. An agent cannot determine correct usage, expected return, or even the core function. The description provides almost none of the context needed for reliable invocation.

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

Parameters1/5

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

The schema has 0% description coverage for its 7 parameters. The description mentions confirm_upload but adds no semantic meaning beyond its name. It does not explain image_path, hand_drawn, output_path, approved_origin, approved_sha256, or timeout_seconds, nor how they interact. The description fails to compensate for the lack of schema information.

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

Purpose3/5

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

The description names a specific action ('upload an image to DECIMER') and resource, but omits the tool's actual purpose of extracting chemical structures, which is only implied by the name. It also does not differentiate from the sibling 'extract_structures_from_image', leaving purpose ambiguous.

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 guidance is a conditional caveat ('only when confirm_upload is explicitly true'), which is a parameter precondition rather than a usage guideline. It provides no context on when to choose this tool over alternatives or any exclusions.

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

fill_office_templateFill Office TemplateC

Fill PPTX/DOCX text and editable ChemDraw placeholders from a manifest.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNo
manifest_pathYes
template_pathYes

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 burden of behavioral disclosure. It does not mention whether the operation modifies files in place, whether it requires specific permissions, whether it is destructive (overwriting placeholders), or what happens to existing content. It also does not describe the manifest format or expected behavior. For a mutation tool that fills placeholders, this is a significant gap in transparency.

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

Conciseness4/5

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

The description is a single, efficient sentence that front-loads the primary action ('Fill') and the target resource. It is appropriately concise for a simple tool, but it omits essential details that would improve usability. Given that it is short and to the point, it earns a 4 for conciseness, though it sacrifices completeness.

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

Completeness2/5

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

With three parameters, no output schema, and no annotations, the description leaves many gaps: the manifest format, placeholder syntax, file type constraints, handling of output_path (what happens if null?), return value, and error behavior are all unspecified. This is inadequate for an agent to correctly invoke the tool without additional context. The description is far from complete for the complexity involved.

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 for the lack of parameter information. The description only hints at the manifest_path ('from a manifest') but does not explain the structure or expected content of the manifest, nor does it clarify the role of output_path (default null) or template_path beyond their names. The tool description adds minimal value over what the parameter names suggest, especially given the absence of schema descriptions.

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

Purpose4/5

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

The description states a clear action 'Fill' targeting a specific resource ('PPTX/DOCX text and editable ChemDraw placeholders') from a 'manifest'. This distinguishes it from sibling tools that embed, extract, or replace ChemDraw objects. However, the term 'manifest' is undefined, and it does not explicitly differentiate from tools like replace_chemdraw_objects_in_office, which also modify content in office files. The purpose is clear but not perfectly precise.

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 guidance on when to use this tool versus alternatives such as embed_cdxml_in_office, replace_chemdraw_objects_in_office, or inspect_chemdraw_objects_in_office. The description gives no context about scenarios, prerequisites, or exclusions. An agent would struggle to know if this is the right tool for a given task without additional information.

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

format_lab_entryA

Format a list of entry dicts into a structured lab book text entry.

Takes a list of typed entry dicts (or a JSON string) and produces a formatted lab book entry. The tool re-parses LCMS PDFs to fill in exact numbers — you only provide peak identifications (name, approximate RT, ion) as search keys.

IMPORTANT: Do NOT write free-form LCMS text. Use the structured entry types below. The tool will look up the actual RT, area%, m/z, and UV from the PDF.

Entry types and their required fields:

{"type": "text", "content": "Procedure paragraph or section header..."}

{"type": "lcms-species", "file": "path/to/report.pdf", "label": "t = 0 min", "peaks": [ {"name": "Product", "rt": 1.02, "ion": {"mode": "ES-", "mz": 444.1}}, {"name": "SM", "rt": 0.65, "ion": {"mode": "ES+", "mz": 275.1}}, {"name": "TPPO", "rt": 1.02, "ion": {"mode": "ES+", "mz": 279.1}} ]}

{"type": "lcms-areas", "file": "path/to/report.pdf", "label": "t = 10 min", "peaks": [ {"name": "Product", "rt": 1.03, "compound_related": true}, {"name": "Byproduct", "rt": 1.26, "compound_related": false} ]}

{"type": "lcms-species", "file": "path/to/report.pdf", "label": "Purified product", "peaks": [ {"name": "Product", "rt": 1.01, "ion": {"mode": "ES-", "mz": 444.2}, "purity": true, "detector": "220nm"} ]}

{"type": "lcms-manual", "file": "path/to/manual_integration.pdf", "label": "Manual LC", "peaks": [ {"name": "Product", "rt": 1.01, "compound_related": true} ]}

{"type": "nmr", "content": "1H NMR (400 MHz, DMSO-d6): ..."}

Workflow: First call parse_analysis_file on each PDF to see peaks/masses. Then build entries referencing those PDFs with approximate RT and ion as search keys. This tool re-reads the PDF and fills in exact numbers.

Args: entries_json: List of entry dicts, or a JSON string, or {"entries": [...]}. output_path: If given, write the formatted text to this file and return {ok, output_path, size} instead of {ok, text}.

Returns: Dict with keys: ok, text (formatted lab book entry string). When output_path is provided, returns {ok, output_path, size} instead.

Safety override: Format a lab entry and atomically publish verified text.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNo
entries_jsonYes

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full disclosure burden, and it does so well. It reveals the key behavioral trait — 're-parses LCMS PDFs to fill in exact numbers' and 'look up the actual RT, area%, m/z, and UV from the PDF' — so the agent knows inputs are approximate search keys. It also discloses both return shapes ({ok, text} vs {ok, output_path, size}). The 'Safety override' line mentioning 'atomically publish verified text' is slightly cryptic and not fully reconciled with the stated returns, but it does gesture at an unstated publishing side-effect. No annotation contradiction exists since none are provided.

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

Conciseness4/5

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

The description is long, but front-loaded with purpose and a critical warning. Each section earns its place: the entry-type examples are verbose yet necessary because the schema provides zero structure for these payloads. The workflow, args, and returns sections are tight. Minor deduplication exists (entry-type example for 'lcms-species' appears twice with different fields), and the 'Safety override' line is tangential, but overall the length is justified by the schema gap.

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 the tool's complexity (five entry types, nested peak/ion structures, PDF re-parsing, two return modes) and 0% schema coverage, the description covers nearly everything needed to call it correctly: entry schemas, required fields, workflow, parameter forms, and return behavior. The main gap is failure handling — what happens when a search-key match fails or a PDF can't be re-parsed — but for the task of formatting entries, the essential calling contract is fully specified.

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

Parameters4/5

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

Schema description coverage is 0%, so the description must fully compensate — and it does. entries_json is documented with all three accepted shapes ('List of entry dicts, or a JSON string, or {"entries": [...]}'), and output_path is explained with its effect on the return value (write to file and return path/size instead of text). The extensive entry-type examples actually document the nested structure that the schema (additionalProperties: true) leaves opaque. This adds real meaning beyond the schema.

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

Purpose5/5

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

The description states a specific verb ('Format'), a precise input ('a list of typed entry dicts or a JSON string'), and a concrete outcome ('a structured lab book text entry'). It clearly distinguishes itself from siblings like parse_analysis_file (which parses, not formats) and assemble_lab_book (which assembles a full book, this formats single entries). An agent can tell exactly what this tool does.

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?

Provides an explicit workflow: 'First call parse_analysis_file on each PDF to see peaks/masses. Then build entries referencing those PDFs...' This directly names the sibling prerequisite and sequencing. It also gives a negative constraint ('Do NOT write free-form LCMS text'). It doesn't list exclusions for when NOT to use this tool (e.g., for non-LCMS formatting alternatives), but the positive guidance is strong and actionable.

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

get_toolkit_capabilitiesGet Toolkit CapabilitiesA

Return versions, profile, tool schema digest, and local capability status.

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

TDQS

A3.7/5.0
Behavior3/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It does state what information is returned (versions, profile, tool schema digest, local capability status), implying a read-only getter operation. However, it does not explicitly mention that it has no side effects, nor does it disclose any potential cost, caching, or failure modes. The listing of returns is helpful but minimal.

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

Conciseness5/5

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

The description is a single, efficient sentence that front-loads the action ('Return') and specifies the exact contents. There is zero wasted text, and it covers all essential information in a compact format.

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?

While the tool is simple (no params, no output schema), the description does not provide guidance on when an agent would need this information. It lists what is returned but does not explain the purpose or value of these fields. For an introspection tool, more context about its typical use (e.g., 'Call this before using other tools to confirm available capabilities') would be beneficial.

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

Parameters4/5

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

The tool has zero parameters, and schema coverage is 100% (vacuously). With no parameters to describe, the baseline is 4. The description appropriately doesn't attempt to document parameters since there are none, and adding parameter detail would be redundant.

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

Purpose5/5

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

The description clearly states the tool's purpose: it returns versions, profile, tool schema digest, and local capability status. This is a specific verb+resource combination, and the list of returned items distinguishes it from all sibling tools, which are focused on domain-specific operations like molecule conversion or rendering.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus others. As a capabilities/introspection tool, it would likely be called before other operations to check versions or support, but this is not stated. There are no alternatives mentioned or exclusions given, leaving the agent to infer usage.

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

inspect_chemdraw_objects_in_officeInspect Chemdraw Objects In OfficeC

Inventory editable ChemDraw objects and extract numbered CDXML previews.

ParametersJSON Schema
NameRequiredDescriptionDefault
input_pathYes
output_dirNo
render_previewsNo

TDQS

C2.8/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It implies a read-only operation by using 'inventory' and 'inspect', but it does not explicitly state whether the input file is modified, what side effects occur, or whether permissions are needed. The existence of output_dir and render_previews suggests writes, but this is not described.

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

Conciseness5/5

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

The description is a single, concise sentence with no filler or redundancy. It is well-structured and immediately scannable.

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?

Given the tool's complexity (3 params, 0% schema coverage, no output schema) and the similarity to siblings, the description is incomplete. It does not define the input format, what qualifies as an 'editable ChemDraw object,' or the structure of the numbered CDXML previews. An agent would lack critical information to invoke the tool correctly.

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

Parameters2/5

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

Schema description coverage is 0%, so the description must explain each parameter's meaning and usage. It does not describe input_path, output_dir, or render_previews. The phrase 'numbered CDXML previews' hints at output artifacts but does not clarify what output_dir or render_previews control. Parameters remain underspecified.

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

Purpose4/5

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

The description states a clear purpose: inventory editable ChemDraw objects and extract numbered CDXML previews. It uses a specific verb-resource combination that indicates what the tool does. However, it does not differentiate from similar siblings like extract_cdxml_from_office, which also deals with CDXML extraction, so it lacks 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 Guidelines2/5

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

The description gives no guidance on when to use this tool versus alternatives. It does not mention prerequisites, limitations, or the situations in which this tool is preferred over siblings like extract_cdxml_from_office or batch_embed_cdxml_in_office. The agent is left to infer usage context.

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

inspect_chemscript_sdkInspect Chemscript SdkC

Catalog every public ChemScript type/member, with filtering or a complete JSON export.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
queryNo
offsetNo
type_nameNo
output_pathNo
include_infrastructureNo

TDQS

C2.5/5.0
Behavior2/5

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

With no annotations, the description carries full responsibility for behavioral disclosure. It implies a read-only cataloging operation but does not explicitly state side effects, performance implications, whether the output is a snapshot, or any access requirements. It also doesn't mention what the JSON export includes or if it is comprehensive.

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

Conciseness3/5

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

The description is a single concise sentence with the main purpose front-loaded. It is not verbose, but it is too brief to cover the tool's complexity. The brevity might be seen as concise, but it sacrifices necessary detail, so it's acceptable but not exemplary.

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

Completeness1/5

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

For a tool with 6 parameters, no annotations, no output schema, and zero schema description coverage, this one-liner is grossly inadequate. It fails to explain the output format, parameter semantics, filtering behavior, or any edge cases, making it nearly impossible for an agent to correctly invoke the tool without additional context.

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 parameters like limit, query, offset, type_name, output_path, and include_infrastructure are entirely undocumented. The description's mention of 'filtering' hints at how some parameters work but does not explain the meaning, types, or interactions of any specific parameter, leaving the agent to guess.

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

Purpose4/5

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

The description states a clear verb ('Catalog') and resource ('public ChemScript type/member'), and mentions filtering and JSON export, which distinguishes it from execution tools like execute_chemscript_sdk. However, it doesn't explicitly contrast with get_toolkit_capabilities or other inspection tools, so it's clear but not fully differentiated.

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives such as get_toolkit_capabilities or execute_chemscript_sdk. There is no mention of prerequisites, typical use cases, or when not to use it, leaving the agent to infer context from the name and description alone.

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

merge_reaction_schemesMerge Reaction SchemesC

Merge parallel, sequential, or unrelated CDXML reaction schemes.

ParametersJSON Schema
NameRequiredDescriptionDefault
modeNoauto
equiv_modeNodefault
input_pathsYes
output_pathNo
allow_adjacentNo
render_previewNo
reference_cdxmlNo
force_sequentialNo

TDQS

C2.2/5.0
Behavior1/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 of behavioral disclosure, and it discloses almost nothing. It doesn't state whether input files are modified or left untouched, whether output_path creates a new file or overwrites, what the rendering behavior is, whether the operation is reversible, or any side effects. 'Merge' hints at a combining operation but nothing about the mutation or output semantics.

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

Conciseness3/5

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

A single front-loaded sentence with zero filler, which is easy to parse. However, the brevity is a symptom of under-specification rather than efficient compression — the sentence is short because it omits nearly all operational detail. Acceptable as conciseness, but the structure earns no credit for covering meaningful content.

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

Completeness1/5

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

With 8 parameters, 0% schema coverage, no annotations, and no output schema, this single sentence is materially inadequate. An agent cannot determine valid mode values, equivalence behaviors, output handling, or what the preview/reference options do. For a tool this parameterized and complex, the description should offer far more operational context.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate for the 8 parameters, and it explains none of them. None of mode, equiv_mode, input_paths, output_path, allow_adjacent, render_preview, reference_cdxml, or force_sequential are mentioned, leaving the agent to guess what these mode toggles and flags mean. This is a serious gap for a tool with two mode-style parameters.

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 ('Merge'), a specific resource ('CDXML reaction schemes'), and the scope ('parallel, sequential, or unrelated'). This clearly distinguishes the operation from siblings like clean_scheme_layout, polish_reaction_scheme, and segment_large_scheme, which perform different transforms on schemes. It's not a tautology and names the file format explicitly, so an agent can tell roughly what it does.

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 phrase 'parallel, sequential, or unrelated' gives a weak hint about when merging applies, but there is no explicit when-to-use guidance, no exclusions, and no mention of alternatives among the many scheme-related siblings (parse_scheme, segment_large_scheme, render_scheme, etc.). An agent has no signal about when to choose merge over a sibling that parses or renders a scheme instead.

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

modify_moleculeA

Analyze or transform a molecule with structural verification.

IMPORTANT: This is the ONLY correct way to modify a molecule. Never edit SMILES strings yourself and pass them directly to draw_molecule — always go through modify_molecule so you get an MCS-based structural diff to verify the change was correct.

Takes a molecule dict (at minimum {"smiles": "..."}) and applies one of 6 operations. Returns the modified molecule with a structural diff showing exactly what atoms/bonds were added, removed, or changed.

Operations: "analyze" — Inspect without modifying: functional groups, IUPAC names, formula, MW, prefix form. No extra kwargs needed. "name_surgery" — Modify via IUPAC name: add/remove substituents. Pass add=[{"locant": "2", "prefix": "fluoro"}] and/or remove=["methyl"] kwargs. "smarts" — Apply a SMARTS reaction transform. Pass smarts= "reaction SMILES" (e.g. "[c:1][F]>>[c:1][Cl]") or reaction_name= from list_reactions output. "set_smiles" — Use when you have edited a SMILES and want to verify the change. Pass the original mol_json and new_smiles=. The MCS diff will confirm exactly what was added/removed. Do NOT generate SMILES from scratch — use resolve_name. "set_name" — Set the display name. Pass new_name=. "reaction" — Apply a named template from list_reactions. Pass reaction_name= and optionally reagent={"smiles": ...} for binary reactions (coupling, etc.).

Args: mol_json: Source molecule dict with at least {"smiles": "..."}. operation: One of: "analyze", "name_surgery", "smarts", "set_smiles", "set_name", "reaction". add: For "name_surgery" — list of {"locant": str, "prefix": str} dicts. remove: For "name_surgery" — list of prefix strings to remove. new_smiles: For "set_smiles" — validated SMILES string. new_name: For "set_name" — new display name string. reaction_name: For "smarts"/"reaction" — template name. reagent: For "reaction" — dict with "smiles" key for the second reagent. smarts: For "smarts" — reaction SMARTS string. description: For "set_smiles" — optional context note.

Returns: For "analyze": ok, input_smiles, canonical_name, alternative_names, functional_groups, prefix_form, bracket_tree, formula, mw. For modifications: ok, input_smiles, output_smiles, input_name, output_name, aligned_names, diff (atoms_added, atoms_removed, atoms_changed, mcs_smarts, delta_formula, delta_mw), formula, mw.

ParametersJSON Schema
NameRequiredDescriptionDefault
addNo
removeNo
smartsNo
reagentNo
mol_jsonYes
new_nameNo
operationYes
new_smilesNo
descriptionNo
reaction_nameNo

TDQS

A4.8/5.0
Behavior4/5

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

No annotations were provided, so the description carries the full behavioral burden. It discloses that the tool returns a structural diff (atoms_added/removed/changed, mcs_smarts) and that it verifies changes, which is critical. However, it does not explicitly mention any side effects like permanence or permission requirements, and the analyze operation being read-only is only implicitly inferred. Overall it is transparent but falls short of exhaustive disclosure.

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

Conciseness5/5

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

Though lengthy, the description is well-structured with clear sections (overview, operations, args, returns). The critical instruction about being the only correct way is front-loaded, and each sentence serves a purpose for a tool with six operations. No fluff; complexity justifies length.

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

Completeness5/5

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

Given the tool's complexity—10 params, 6 operations, nested objects, and no output schema—the description is comprehensive. It details return fields for both analyze and modification modes, covers all param/operation combinations, and distinguishes from 30+ siblings. There is no missing information that an agent needs to call this tool correctly.

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

Parameters5/5

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

Schema description coverage is 0%, and the description fully compensates by defining every parameter in context. Each operation lists which kwargs to pass (e.g., 'add=[{"locant": "2", "prefix": "fluoro"}]' for name_surgery) and explains the meaning of mol_json and operation. It even provides a SMARTS example, adding value far beyond the bare schema types and defaults.

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

Purpose5/5

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

The description opens with a clear, specific purpose: 'Analyze or transform a molecule with structural verification.' It enumerates six distinct operations with concrete examples (e.g., 'name_surgery' with add/remove kwargs, 'smarts' with reaction SMILES), and explicitly contrasts itself with draw_molecule and resolve_name, making it unambiguous which tool to use.

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?

The description provides strong when/when-not guidance: 'This is the ONLY correct way to modify a molecule. Never edit SMILES strings yourself and pass them directly to draw_molecule.' It also explicitly directs when to use alternatives: 'Do NOT generate SMILES from scratch — use resolve_name.' For each operation it specifies exact inputs, leaving no ambiguity about applicability.

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

parse_analysis_fileA

Parse an LCMS or NMR analysis PDF to extract peaks and data.

Supports Waters LCMS reports and MestReNova NMR PDFs. Returns structured peak data for LCMS species identification or NMR characterisation.

This module is under active development. If unavailable, the tool returns a graceful error rather than crashing.

Args: pdf_path: Path to an LCMS or NMR PDF report. output_path: If given, write the parsed data as JSON to this file and return {ok, output_path, size} instead of the full dict.

Returns: For LCMS: dict with retention_times, peak_areas, masses, UV traces. For NMR: dict with chemical_shifts, multiplicities, integrations. When output_path is provided, returns {ok, output_path, size}. Returns {ok: False, error: "..."} if module unavailable or parse fails.

Safety override: Parse an analysis file and atomically publish verified JSON.

ParametersJSON Schema
NameRequiredDescriptionDefault
pdf_pathYes
output_pathNo

TDQS

A4/5.0
Behavior4/5

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

With no annotations, the description carries full burden. It discloses that the module is under active development, returns a graceful error if unavailable, and describes both success and failure return shapes. It also explains the optional output_path behavior. While it does not explicitly state side effects (like being read-only), the overall behavior is well documented.

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

Conciseness3/5

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

The description is well-structured with clear sections (Args, Returns), but it is somewhat verbose and includes a suspicious 'Safety override' line that seems out of place and adds noise. It could be tightened without losing essential information.

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

Completeness4/5

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

The description covers the input types, both types of output (LCMS and NMR), optional output_path behavior, error handling, and the fact that it's under development. It lists key output keys (retention_times, chemical_shifts, etc.), providing a clear picture. Missing details like file size limits or dependencies are minor for a parsing tool of this nature.

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. The 'Args' section explains pdf_path as the path to an LCMS or NMR PDF report and output_path as an optional destination for JSON output with a specific return format. This adds meaningful information beyond the property names, effectively compensating for the schema's lack of descriptions.

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

Purpose5/5

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

The description starts with a clear, specific action: 'Parse an LCMS or NMR analysis PDF to extract peaks and data.' It names the input format (Waters LCMS, MestReNova NMR) and the intended output (structured peak data for species identification or characterization). This clearly distinguishes it from siblings like parse_reaction (reaction files) and analyze_lcms_series (likely for series analysis).

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?

It provides context by stating it supports Waters LCMS reports and MestReNova NMR PDFs, implying when to use it. However, it does not explicitly compare against alternative tools or state when NOT to use it. The 'Safety override' line is disconnected and does not clarify usage. Since it lacks explicit alternatives, it only merits a 3.

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

parse_reactionA

Parse reaction files into a semantic JSON descriptor.

Extracts every species with canonical SMILES, role classification (using Schneider fingerprint scoring for reactant/reagent binary, plus curated database for semantic roles like base/solvent/catalyst), display names, equivalents, mass data, and adducts. Produces a single JSON source of truth suitable for summarize_reaction, render_scheme, or LCMS analysis.

Provide at least one file path. Multiple may be combined (e.g. cdxml + csv) to merge structural data with ELN metadata.

Args: cdxml: Path to a .cdxml reaction file. cdx: Path to a .cdx reaction file (converted internally). csv: Path to a Findmolecule ELN CSV export. rxn: Path to a .rxn file. input_dir: Directory containing experiment files (auto-discovers cdxml/cdx/csv/rxn by experiment ID). output_path: If given, write the result JSON to this file and return {ok, output_path} instead of the full dict.

Returns: Reaction descriptor dict with keys: version, experiment, input_files, reaction_smiles, reaction_class, species (list with role, smiles, formula, mw, etc.), conditions, and eln_data. When output_path is provided, returns {ok, output_path} instead.

Safety override: Parse a reaction and atomically publish its JSON descriptor.

ParametersJSON Schema
NameRequiredDescriptionDefault
cdxNo
csvNo
rxnNo
cdxmlNo
input_dirNo
output_pathNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the full burden. It discloses the parsing algorithm (Schneider fingerprint scoring, curated database), output structure, and the output_path behavior (returns {ok, output_path}). However, the trailing 'Safety override: Parse a reaction and atomically publish its JSON descriptor' is ambiguous — it does not clarify what 'publish' means or whether there are side effects beyond writing to a file. Still, overall transparency is high.

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 well-organized: purpose, extraction detail, usage, args, returns, and a final note. Most sentences are information-dense. The 'Safety override' line appears misplaced and unclear, adding noise without clear value, which prevents a 5. Minor redundancy, but overall structured and front-loaded.

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

Completeness5/5

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

Given six parameters, no annotations, and no output schema, the description provides everything needed: required input (at least one file), optional file combination, full output schema (keys), return behavior when output_path is set, and even references to dependent tools. No critical usage context is missing.

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 fully compensates. Each of the six parameters is individually documented with specific behavior (e.g., 'cdx: Path to a .cdx reaction file (converted internally)'), and it explains how multiple parameters can be combined and how input_dir auto-discovers files. This goes far beyond the bare schema.

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

Purpose5/5

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

The description states a specific verb and resource: 'Parse reaction files into a semantic JSON descriptor.' It details the output (species with SMILES, roles, etc.) and explicitly lists supported file formats, making it clear this is for reaction files, distinct from sibling parsers like parse_scheme or parse_analysis_file. The purpose is unambiguous and information-rich.

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

Usage Guidelines3/5

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

The description gives practical usage instructions (provide file paths, combine multiple formats) and notes the output is suitable for downstream tools, but does not explicitly contrast this tool with siblings. It does not state when to prefer parse_reaction over parse_scheme or parse_analysis_file, leaving selection to implication. Adequate but not explicit.

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

parse_schemeA

Parse a CDXML reaction scheme into a structured description.

Reads a CDXML file containing a reaction scheme (single- or multi-step) and returns a structured JSON with a species registry, reaction graph, topology classification, and a natural language narrative suitable for LLM reasoning.

Uses two strategies in order: step-attribute path (reads attributes if present) then geometry-based fallback (spatial arrow detection). Text labels near arrows are classified as "chemical", "condition_ref", "footnote", "yield", "compound_label", "citation", or "bioactivity".

Args: cdxml_path: Path to a CDXML file containing a reaction scheme. output_path: If given, write the result JSON to this file and return {ok, output_path, size} instead of the full dict.

Returns: Dict with keys: source_file, species (dict of species records with smiles, name, formula, mw, role, text_category), steps (list with reactant/product/reagent species IDs and conditions), topology (linear/parallel/convergent/divergent), content_type, narrative (human-readable summary), and optionally sub_schemes for multi-panel files. When output_path is provided, returns {ok, output_path, size}.

Safety override: Parse a scheme and atomically publish its JSON descriptor.

ParametersJSON Schema
NameRequiredDescriptionDefault
cdxml_pathYes
output_pathNo

TDQS

A3.9/5.0
Behavior4/5

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

With no annotations, the description carries full disclosure burden. It reveals the dual parsing strategies, label classifications, and the side effect of writing to output_path when provided. The cryptic 'Safety override: Parse a scheme and atomically publish its JSON descriptor' is vague but does hint at a publishing behavior. Overall it is transparent about the tool's actions and return structure, though it leaves some ambiguity around the safety override.

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

Conciseness3/5

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

The description is long and detailed, but logically organized with an opening summary, strategy explanation, argument details, and return structure. Some elements (the lengthy list of label categories, the safety override sentence) add noise and could be trimmed. Still, it remains readable and front-loaded with the core purpose.

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 tool with minimal schema and no output schema, the description is thorough: it specifies all major output keys, strategies, and the optional output_path behavior. It does not address error handling, file format specifics, or prerequisites, but for the core invocation and expected result it is sufficiently 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 must fully explain parameters. It does: cdxml_path is clearly defined as a path to a CDXML file containing a reaction scheme, and output_path explains the conditional write behavior and the altered return shape. This adds significant meaning beyond the bare schema types.

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

Purpose5/5

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

The description opens with a clear verb and resource: 'Parse a CDXML reaction scheme into a structured description.' It then enumerates exactly what the output contains (species registry, reaction graph, topology classification, narrative) differentiating it from mere conversion or rendering siblings. This is unambiguous and actionable.

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

Usage Guidelines2/5

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

The description explains how the tool works internally (strategies, classification) but never states when to choose it over siblings like parse_reaction, summarize_reaction, or extract_structures_from_image. No explicit 'use this when...' or 'for X instead' guidance is provided, leaving the agent to infer applicability from the function alone.

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

parse_scifinder_rdfParse Scifinder RdfC

Parse SciFinder RDF and optionally enrich CAS data over the network.

ParametersJSON Schema
NameRequiredDescriptionDefault
input_pathYes
output_pathNo
resolve_casNo
confirm_pubchemNo

TDQS

C2.3/5.0
Behavior2/5

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

With no annotations provided, the description must carry the full burden of behavioral disclosure. It mentions 'optionally enrich CAS data over the network', which hints at network activity, but doesn't explain what that entails (e.g., external calls, data validation, side effects). It also fails to mention output format, error behavior, or limits. This is a significant gap for a parsing tool.

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

Conciseness2/5

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

The description is a single short sentence, which is technically concise, but it is under-specified rather than efficiently detailed. It omits essential information about parameters and behavior, so its brevity does not contribute to usability. The one useful clause about enrichment is buried at the end without front-loading critical details.

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

Completeness1/5

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

Given four parameters, no output schema, and no annotations, this description is severely incomplete. It does not explain what the tool returns, how to use the parameters, what 'enrichment' does, or any operational constraints. An agent cannot reliably call this tool correctly with only this description.

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

Parameters1/5

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

The input schema provides zero descriptions for the four parameters (input_path, output_path, resolve_cas, confirm_pubchem), and the description does not compensate. The phrase 'enrich CAS data over the network' loosely relates to resolve_cas and confirm_pubchem, but it offers no specifics about what each parameter controls or expects. With 0% schema coverage, the description fails to give agents the parameter information they need.

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 identifies a specific verb 'Parse' and a specific resource 'SciFinder RDF', and adds 'optionally enrich CAS data over the network' to indicate a secondary capability. This distinguishes it from other parse tools like parse_analysis_file or parse_reaction by naming the unique data source. However, it doesn't explicitly contrast with siblings, so it's not a perfect 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 provides no guidance on when to use this tool versus its many siblings (parse_analysis_file, parse_reaction, resolve_name, etc.). It doesn't mention use cases, prerequisites, or exclusions. An agent would have to infer from the name alone that this is for SciFinder RDF files, which is not explicit guidance.

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

polish_reaction_schemePolish Reaction SchemeC

Run the audited deterministic polishing pipeline on a CDXML scheme.

ParametersJSON Schema
NameRequiredDescriptionDefault
eln_csvNo
approachNochemdraw_mimic
align_modeNordkit
input_pathYes
output_pathNo
render_previewNo
reference_cdxmlNo
merge_conditionsNo

TDQS

C2.1/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It adds the terms 'audited' and 'deterministic', hinting at reproducibility and review, but does not explain side effects, whether files are modified in place, or what the pipeline actually does to the scheme. This is insufficient for a mutation-like tool.

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

Conciseness3/5

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

The description is a single sentence with no waste, which is concise. However, it is under-specified for the tool's complexity, providing only a minimal phrase that does not earn its place by adding needed information. It is better than a pure tautology but still lacks substance.

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

Completeness1/5

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

With 8 parameters, no annotations, and no output schema, this description is drastically incomplete. It fails to explain what 'polishing' entails, how inputs/outputs are specified, or what the pipeline returns. An agent would have to guess at most aspects of usage.

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

Parameters1/5

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

Schema description coverage is 0% and the description mentions no parameters at all. It does not clarify input_path, output_path, approach, align_mode, or any other of the 8 parameters. The description offers zero help in understanding how to invoke the tool with correct arguments.

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

Purpose3/5

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

The description states a verb ('run') and a resource ('polishing pipeline on a CDXML scheme'), but 'polishing' is vague and undefined. It does not distinguish the tool from siblings like clean_scheme_layout or merge_reaction_schemes, leaving an agent unsure what specific transformation is performed.

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

Usage Guidelines2/5

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

No guidance is given about when to use this tool versus alternatives. The phrase 'audited deterministic polishing pipeline' implies some context but does not specify conditions, prerequisites, or exclusions, so an agent cannot route to it correctly.

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

render_cdxml_filesRender Cdxml FilesC

Render one or more CDXML files through native ChemDraw COM.

ParametersJSON Schema
NameRequiredDescriptionDefault
dpiNo
formatNopng
output_dirNo
input_pathsYes

TDQS

C2.7/5.0
Behavior2/5

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

With no annotations, the description carries the full burden of behavioral disclosure. It mentions 'native ChemDraw COM' implying a dependency, but does not explain side effects like file creation, output location, or system requirements. No mention of what happens to input files or whether this is a read-only or mutation operation.

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

Conciseness4/5

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

The description is a single sentence with no fluff, making it very concise and front-loaded with the core verb and resource. However, it is so terse that it lacks useful structure, but this is not a verbosity issue; it is an under-specification issue, which is captured elsewhere.

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

Completeness2/5

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

For a tool with 4 parameters, no output schema, and no annotations, the description is grossly incomplete. It does not explain output formats, resolution settings, directory handling, or any requirements for ChemDraw COM. An agent cannot fully understand the tool's behavior from this description alone.

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 for all parameters. It only hints at 'one or more CDXML files' which maps to input_paths, but provides no meaning for dpi, format, or output_dir. The parameter semantics are largely undocumented.

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

Purpose4/5

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

The description clearly states the verb 'Render' and the resource 'CDXML files', and adds specificity with 'through native ChemDraw COM'. This distinguishes it from generic rendering tools, though it does not explicitly name alternatives like render_scheme or render_to_png. The resource type (CDXML) is distinctive enough for a clear purpose.

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

Usage Guidelines2/5

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

No guidance is provided on when to use this tool versus siblings. There is no mention of context, prerequisites, or exclusions. The description only states what it does, leaving an agent to infer usage without any comparative guidance.

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

render_schemeA

Render a chemical reaction scheme to publication-ready CDXML.

Accepts exactly ONE of: yaml_text, compact_text, or json_path. Call with NO arguments to see the full YAML schema reference.

  • yaml_text: Write YAML with structures (ID + SMILES) and steps (substrates, products, above/below arrow).

  • json_path: Path to reaction JSON from parse_reaction (auto-layout).

IMPORTANT: Every SMILES in the YAML must come from a tool — resolve_name, modify_molecule, parse_reaction, extract_structures_from_image, etc. Never write SMILES from built-in chemistry knowledge or from reading an image with vision. Always call the appropriate tool first, then use the SMILES from its output in your YAML.

Convention: ONE substrate on center line per step. Additional reagents go in above_arrow (structures or text). This shares intermediates between sequential steps.

Args: yaml_text: YAML scheme descriptor string. compact_text: Compact DSL syntax string. json_path: Path to a reaction JSON file. layout: Layout for json_path: "auto", "landscape", "portrait". output_path: If given, write the CDXML to this file and return {ok, output_path, size} instead of the raw CDXML string.

Returns: CDXML string (when output_path is None), or {ok, output_path, size} when output_path is provided, or YAML schema reference if called with no arguments.

Safety override: Render a scheme through a validated no-overwrite staging file.

ParametersJSON Schema
NameRequiredDescriptionDefault
layoutNoauto
json_pathNo
yaml_textNo
output_pathNo
compact_textNo

TDQS

A4.3/5.0
Behavior4/5

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

With no annotations, the description carries the behavioral burden. It discloses that calling with no arguments returns the YAML schema reference, that output_path writes to a file, and mentions a safe staging mechanism ('validated no-overwrite staging file'). It also instructs against using built-in chemistry knowledge for SMILES. This goes beyond a minimal description but does not detail side effects like file permissions or potential destructive operations beyond the no-overwrite claim.

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 well-structured with sections for purpose, usage, args, returns, and a safety note. It is somewhat long but every sentence adds value, such as the SMILES sourcing warning and the convention for one substrate. The front-loaded purpose and clear parameter descriptions make it effective despite its length.

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

Completeness5/5

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

Given the tool has 5 parameters, no output schema, and no annotations, the description provides all necessary information: input formats, workflow guidance, return types, and how to obtain the full YAML schema. It even covers the safety override. An agent has enough to call the tool correctly without ambiguity.

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 fully compensates. It explains each parameter (yaml_text, compact_text, json_path, layout, output_path), their mutual exclusivity, and the layout values. It also clarifies the return behavior based on output_path. This adds substantial meaning beyond the raw schema types and defaults.

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

Purpose5/5

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

The description clearly states the tool renders a chemical reaction scheme to publication-ready CDXML, specifying the verb, resource, and output. It differentiates from siblings like parse_scheme and clean_scheme_layout by emphasizing the publication-ready CDXML output and the accepted input formats (YAML, compact DSL, JSON from parse_reaction).

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

Usage Guidelines3/5

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

The description provides usage context such as accepting exactly one of three input formats, the workflow of getting SMILES from other tools, and the convention for one substrate per step. However, it does not explicitly state when to use this tool versus siblings like render_to_png or clean_scheme_layout, and there are no explicit exclusions or alternative tool recommendations.

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

render_to_pngA

Render a CDXML file to PNG using ChemDraw COM.

Uses ChemDraw's native rendering engine (via COM automation) at 300 DPI with a solid white background. ChemDraw must be installed (Professional 16+) and closed before calling this tool.

This tool uses ChemDraw COM exclusively — no RDKit fallback. For a quick preview without ChemDraw, use draw_molecule which returns CDXML that can be opened directly.

Args: cdxml_path: Path to the CDXML file to render. output_path: Output PNG path. If not given, writes to the same directory as the input with a .png extension.

Returns: Dict with keys: ok, input, output (absolute path to PNG file). Returns {ok: False, error: "..."} if ChemDraw COM is unavailable or rendering fails.

Safety override: Render CDXML to a validated PNG through a staging file.

ParametersJSON Schema
NameRequiredDescriptionDefault
cdxml_pathYes
output_pathNo

TDQS

A4.7/5.0
Behavior4/5

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

Since no annotations are provided, the description carries the full burden. It discloses key behaviors: COM automation, 300 DPI, white background, the requirement that ChemDraw be closed, and the lack of an RDKit fallback. It also explains output path defaults and error return format. However, the 'Safety override: Render CDXML to a validated PNG through a staging file' line is cryptic and unexplained, and it does not mention potential side effects like overwriting existing files.

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 well-structured with a leading purpose, details, Args, Returns, and a safety note. It is front-loaded with the core function. However, the 'Safety override' sentence is out of place and adds confusion without clear benefit, making the description slightly less concise than it could be.

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

Completeness5/5

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

The description is complete for a tool with external dependencies: it covers installation requirements, prerequisites (ChemDraw closed), output behavior, return dict keys, and error handling. It also names an alternative tool for fallback. Nothing essential is missing for an agent to invoke it correctly.

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

Parameters5/5

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

Schema coverage is 0% (the schema provides no descriptions), so the description must compensate. It does so with an Args section that explains cdxml_path (path to CDXML file) and output_path (default behavior: writes to same directory with .png extension). This adds meaning beyond the bare schema, making parameter usage clear.

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

Purpose5/5

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

The opening sentence states a specific verb, resource, and output: 'Render a CDXML file to PNG using ChemDraw COM.' It clearly distinguishes from siblings by explicitly mentioning 'no RDKit fallback' and naming draw_molecule as an alternative, so an agent knows exactly what this tool does and what it is not.

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?

The description explicitly states when to use this tool (requires ChemDraw Professional 16+ and that it be closed) and provides an alternative for quick previews: 'For a quick preview without ChemDraw, use draw_molecule which returns CDXML that can be opened directly.' This gives clear when-to-use and when-not-to-use guidance.

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

replace_chemdraw_objects_in_officeReplace Chemdraw Objects In OfficeC

Replace selected ChemDraw OLE contents and previews without moving them.

ParametersJSON Schema
NameRequiredDescriptionDefault
input_pathYes
output_pathNo
render_pdf_previewNo
replacements_manifestYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations provided, the description carries full responsibility for behavioral disclosure. It hints at mutation ('replace') and preserving position ('without moving them'), but omits crucial details like whether the input file is modified in place, what output_path does, the effect of render_pdf_preview, or any side effects 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.

Conciseness3/5

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

The description is a single sentence with no redundancy, but it is under-specified. While concise, it sacrifices essential information, making it inadequately detailed for a tool of this complexity.

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

Completeness1/5

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

Given the tool is a mutation operation with 4 parameters, no annotations, and no output schema, the one-sentence description is grossly incomplete. It lacks the manifest format, selection mechanism, output handling, preview behavior, and any error or edge-case information.

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

Parameters1/5

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

Schema description coverage is 0%, and the description does not mention any of the four parameters. It provides no explanation of input_path, output_path, render_pdf_preview, or replacements_manifest, leaving the agent to infer meaning solely from names and types.

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

Purpose5/5

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

The description states a specific verb ('Replace'), a clear resource ('selected ChemDraw OLE contents and previews'), and a scope ('selected'), while also noting a key constraint ('without moving them'). This distinguishes it from sibling tools like inspect (read-only) and embed (add new).

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

Usage Guidelines2/5

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

No guidance is given on when to use this tool versus alternatives. It does not mention when to prefer it over inspect_chemdraw_objects_in_office or embed_cdxml_in_office, nor does it state any prerequisites or exclusions.

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

resolve_nameA

Resolve any chemical identifier to a rich molecule descriptor.

Converts a name, abbreviation, condensed formula, or CAS number into a structured molecule dict with SMILES, formula, MW, exact mass, IUPAC name, reagent role, and display text. Uses a 4-tier resolution chain: curated reagent DB → condensed formula parser → ChemScript IUPAC → PubChem.

Do NOT hand-construct SMILES — use this tool instead. The returned dict can be passed directly to modify_molecule, draw_molecule, or used to build a render_scheme input.

Args: query: Chemical identifier — common name, IUPAC name, abbreviation, condensed formula (e.g. "PhB(OH)2"), or CAS number. Examples: "aspirin", "Cs2CO3", "2-chloropyridine", "534-17-8", "Et3N". use_network: Allow PubChem lookup (requires internet). Default True.

Returns: Dict with keys: ok, name, smiles, formula, mw, exact_mass, iupac_name, source (which tier resolved it), role (if in reagent DB), display_text, prefix_form (IUPAC substituent prefix, if applicable). Returns {ok: False, error: "..."} if unresolvable.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
use_networkNo

TDQS

A4.7/5.0
Behavior5/5

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

Since no annotations are provided, the description carries the full burden of behavioral disclosure. It does so comprehensively: it explains the 4-tier resolution chain (curated reagent DB → condensed formula parser → ChemScript IUPAC → PubChem), the exact return dict keys, the error behavior ({ok: False, error: ...}), and the network dependency for PubChem (via the use_network parameter). No aspect of the tool's behavior is left to the agent's guess, and there is no contradiction with any annotations (since none exist).

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 multi-paragraph and includes an Args section and a Returns section, which makes it longer than a typical one-liner. However, every sentence contributes: the opening sentence front-loads the purpose, the examples are invaluable, and the return dict documentation is essential given there is no output schema. It is structured with clear headings and is not padded with fluff. It earns a 4 because it is detailed but not excessively verbose for a tool of this complexity.

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

Completeness5/5

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

This tool has no output schema and moderate complexity (2 parameters, one optional). The description covers all necessary context: the input resolution rules, the exact output keys, the error condition, and even pointers to downstream usage (modify_molecule, draw_molecule, render_scheme). Nothing an agent needs to call it correctly or interpret its result is missing. Given the rich content of the returns dict, the written documentation is fully sufficient.

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% — the schema only shows bare types (string, boolean) with no descriptions. The description compensates richly: for 'query' it defines what constitutes a chemical identifier, gives examples across all accepted forms (aspirin, Cs2CO3, 2-chloropyridine, CAS number, Et3N), and for 'use_network' it explains the purpose (PubChem lookup) and the requirement (internet) plus default. This additional meaning is exactly what an agent needs to correctly construct inputs.

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

Purpose5/5

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

The description opens with a specific, action-oriented statement: 'Resolve any chemical identifier to a rich molecule descriptor.' It then enumerates the exact input types (name, abbreviation, condensed formula, CAS number) and the output structure (SMILES, formula, MW, etc.), which makes the tool's purpose unambiguous and clearly distinguishes it from sibling tools like search_compound or parse_reaction. The 'Do NOT hand-construct SMILES' instruction further cements its role as the canonical resolver.

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

Usage Guidelines4/5

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

The description gives direct usage guidance: 'Do NOT hand-construct SMILES — use this tool instead' and explains how the returned dict can be fed into other tools (modify_molecule, draw_molecule, render_scheme). This tells when to use it and provides context for integration. However, it does not explicitly state when *not* to use it or name an alternative tool (e.g., search_compound) for similar identifier lookups, leaving room for an agent to wonder about overlapping tools. So it is strong but not fully exhaustive.

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

search_compoundA

Search for a compound across experiment JSON files by SMILES similarity.

Scans a directory of reaction JSON files (from parse_reaction) and returns exact matches and structurally similar compounds above the given Tanimoto threshold. Useful for finding related experiments, checking if a compound has been made before, or tracing a compound through a multi-step synthesis.

This module is under active development. If unavailable, the tool returns a graceful error rather than crashing.

Args: smiles: SMILES string of the compound to search for. Use resolve_name to get a validated SMILES first. experiment_dir: Directory containing reaction JSON files to search. similarity_threshold: Tanimoto similarity cutoff (0–1). Default 0.85.

Returns: Dict with keys: ok, query_smiles, exact_matches (list), similar_matches (list with similarity scores), total_files_searched. Returns {ok: False, error: "..."} if module unavailable or search fails.

ParametersJSON Schema
NameRequiredDescriptionDefault
smilesYes
experiment_dirYes
similarity_thresholdNo

TDQS

A4/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 that the module is under active development and returns a graceful error if unavailable, and it details the return dict structure. However, it doesn't explicitly state that the operation is read-only or describe any side effects. For a search tool, this is adequate but not exhaustive.

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 well-structured with Args and Returns sections, and the main purpose is front-loaded in the first sentence. It's longer than strictly necessary but each part earns its place—no filler or repetition. The structure aids quick scanning.

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

Completeness4/5

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

There is no output schema, so the description explains the return keys and error handling. It mentions the prerequisite of using resolve_name and the scanning behavior. It covers what an agent needs to make the call correctly. It could elaborate on the structure of match lists, but that's a minor gap.

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 fully compensates by explaining each parameter in the Args section. It clarifies the format of smiles, the role of experiment_dir, and the semantics/default of similarity_threshold (Tanimoto cutoff, 0–1, default 0.85). This goes well beyond the raw schema.

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

Purpose4/5

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

The description clearly states the verb and resource: 'Search for a compound across experiment JSON files by SMILES similarity.' It also specifies the mechanism (Tanimoto threshold) and distinguishes itself from siblings like compare_molecules by focusing on scanning a directory of JSON files. Though it doesn't explicitly name alternatives, the purpose is unambiguous and specific.

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?

Provides explicit use cases: 'finding related experiments, checking if a compound has been made before, or tracing a compound through a multi-step synthesis.' It also advises using resolve_name to get a validated SMILES first, which is actionable guidance. It doesn't state when not to use it or name alternatives, but the context is clear enough.

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

segment_large_schemeSegment Large SchemeB

Segment a disconnected or multi-panel CDXML scheme into logical regions.

ParametersJSON Schema
NameRequiredDescriptionDefault
verboseNo
cdxml_pathYes
output_pathNo

TDQS

B3.3/5.0
Behavior2/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It only states the action (segmenting) without describing side effects, output format, whether the input is modified, or what the function returns. An agent cannot anticipate what 'segmenting' produces (e.g., a list of regions, a modified file) or any side effects on the input file. This is a significant gap for a tool with no annotation support.

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

Conciseness5/5

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

The description is a single, well-formed sentence with no filler. The action is front-loaded, and every word contributes to meaning. It is appropriately concise for the tool's purpose.

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

Completeness2/5

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

For a tool that likely performs a non-trivial transformation on a scheme, the description is incomplete. It does not specify the return value, whether the input file is overwritten, or how the segments are represented. The absence of an output schema and annotations increases the need for description coverage, which is lacking. An agent would struggle to predict the tool's behavior and result.

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

Parameters1/5

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

Schema description coverage is 0%, so the description must compensate by explaining parameter meanings. It does not mention cdxml_path, output_path, or verbose at all. The schema only provides names and types, but no semantic guidance. The description adds zero value for parameter understanding.

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

Purpose5/5

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

The description states a specific verb ('segment') applied to a specific resource ('disconnected or multi-panel CDXML scheme') with a clear outcome ('logical regions'). This uniquely distinguishes it from sibling tools like parse_scheme, render_scheme, and clean_scheme_layout, which have different purposes. The phrasing is precise and immediately conveys the tool's function.

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

Usage Guidelines4/5

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

The description explicitly conditions the use on the input type ('disconnected or multi-panel CDXML scheme'), providing clear context for when to apply it. However, it does not mention alternatives or situations where this tool should be avoided, so it lacks explicit exclusions. This matches 'clear context, no exclusions'.

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

summarize_reactionA

Return a compact, context-efficient view of a reaction JSON file.

The full reaction JSON can be 3,000+ tokens with geometry data. This tool returns only the fields you need for a given task, making it practical for LLM reasoning without burning context.

Default fields (when no arguments given): species: id, name, role, role_detail, smiles, display_text, formula, mw top-level: experiment, conditions eln_data: product_yield, reaction_type

Pass ["*"] for any field set to get all fields (equivalent to loading the full JSON). Request specific fields by name for task-focused summaries.

Args: json_path: Path to a reaction JSON file from parse_reaction. species_fields: Species fields to include. Available: id, name, role, role_detail, smiles, smiles_neutral, is_sm, is_dp, is_substrate, is_solvent, exact_mass, exact_mass_full, mw, formula, adducts, source, source_id, csv_equiv, csv_mass, csv_name, csv_volume, csv_supplier, display_text, original_geometry. Pass [""] for all. top_fields: Top-level fields. Available: version, experiment, input_files, reaction_smiles, reaction_class, reaction_name, classification_confidence, warnings, metadata, conditions. Pass [""] for all. eln_fields: ELN data fields. Available: sm_mass, product_obtained, product_yield, procedure_text, procedure_plain, reaction_type, start_date, labbook_name, solvents, solvent_details. Pass ["*"] for all.

Returns: Compact dict with requested fields for each species and top-level keys.

ParametersJSON Schema
NameRequiredDescriptionDefault
json_pathYes
eln_fieldsNo
top_fieldsNo
species_fieldsNo

TDQS

A4.4/5.0
Behavior4/5

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

With no annotations provided, the description carries the full burden of behavioral disclosure. It transparently states that the tool returns a subset of fields, defaults to specific fields, and can return all fields on request. It does not describe any side effects or error behavior, but for a read-only summary operation this is acceptable. The description is honest about what it does and does not hide any traits.

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 longer than average but is well-organized: purpose statement, problem motivation, defaults, usage note, then a clear Args block with bullet-like lists and a Returns line. It is front-loaded with the core purpose and every paragraph earns its place. The field enumerations are necessary given the schema's lack of descriptions, so the length is justified.

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 the tool has 4 parameters, 0% schema coverage, no output schema, and no annotations, the description is nearly complete. It explains default fields, available fields per parameter, the wildcard option, and the return type ('Compact dict'). It omits edge-case handling (e.g., invalid field names) and does not mention error behavior, but for a read-only summarizer these are minor. Overall, it gives an agent everything needed to call it correctly.

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

Parameters5/5

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

Schema description coverage is 0%, so the description must compensate. It does so thoroughly: for each of the three field-list parameters, it enumerates every available option, explains the ['*'] wildcard, and specifies defaults. It also defines json_path as a path from parse_reaction. This adds substantial meaning beyond the bare schema, making it possible for an agent to construct calls without guessing.

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

Purpose5/5

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

The description opens with a specific verb-resource pair ('Return a compact, context-efficient view of a reaction JSON file') and immediately explains the problem it solves (3,000+ token files) and distinct behavior (field filtering). It clearly differentiates itself from siblings like parse_reaction by naming the source and offering a filtered view. This is a precise, unambiguous purpose.

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

Usage Guidelines4/5

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

The description explains when to use this tool ('practical for LLM reasoning without burning context') and how to get all fields via ['*'], but it does not explicitly state when NOT to use it or directly compare to alternatives like parse_reaction. It does reference parse_reaction as the source, implying its role, and covers default vs. custom usage clearly. Slightly short of a 5 because exclusion criteria are not stated.

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. 35 tool updatesv0.1.0
    • First observedanalyze_lcms_series
    • First observedassemble_lab_book
    • First observedbatch_compare_molecules
    • First observedbatch_embed_cdxml_in_office
    • First observedclean_scheme_layout
    • First observedcompare_molecules
    • First observedconvert_cdx_cdxml
    • First observeddiagnose_runtime
    • First observeddiscover_experiment_files
    • First observeddraw_molecule
    • First observedembed_cdxml_in_office
    • First observedexecute_chemscript_sdk
    • First observedextract_cdxml_from_office
    • First observedextract_structures_from_image
    • First observedextract_structures_via_decimer_api
    • First observedfill_office_template
    • First observedformat_lab_entry
    • First observedget_toolkit_capabilities
    • First observedinspect_chemdraw_objects_in_office
    • First observedinspect_chemscript_sdk
    • First observedmerge_reaction_schemes
    • First observedmodify_molecule
    • First observedparse_analysis_file
    • First observedparse_reaction
    • First observedparse_scheme
    • First observedparse_scifinder_rdf
    • First observedpolish_reaction_scheme
    • First observedrender_cdxml_files
    • First observedrender_scheme
    • First observedrender_to_png
    • First observedreplace_chemdraw_objects_in_office
    • First observedresolve_name
    • First observedsearch_compound
    • First observedsegment_large_scheme
    • First observedsummarize_reaction

TDQS

C2.9/5.0

Scored across 35 tools

Disambiguation3/5

Many tools have overlapping purposes (e.g., render_scheme vs render_cdxml_files vs render_to_png, extract_structures_from_image vs extract_structures_via_decimer_api, assemble_lab_book vs format_lab_entry). Descriptions clarify distinctions but the large number of similar-sounding tools (e.g., clean_scheme_layout, merge_reaction_schemes, polish_reaction_scheme) could still cause misselection, especially for a busy agent.

Naming Consistency4/5

All tool names use snake_case and most follow a verb-first pattern (convert_, parse_, resolve_, modify_, render_, embed_, etc.). There are minor deviations like 'render_to_png' (preposition) and 'extract_structures_via_decimer_api' (long but consistent). Overall, naming is predictable and stylistically uniform.

Tool Count2/5

With 35 tools, the server is heavily tool-dense. While the domain (chemistry/cheminformatics) is broad, many tools are highly specialized or meta (diagnose_runtime, inspect_chemscript_sdk, execute_chemscript_sdk, get_toolkit_capabilities) and may not be necessary for typical workflows. The count exceeds the upper bound of a well-scoped set, making it feel bloated.

Completeness4/5

The toolkit covers a wide range of chemistry workflows: molecule resolution, modification, drawing, reaction parsing, scheme manipulation, office integration, LCMS/NMR analysis, and lab book assembly. There are minor gaps (e.g., no direct molecule editing without modification, no explicit NMR peak assignment tool) but agents can work around these using existing tools.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    C
    maintenance
    ChemMCP is an easy-to-use and extensible chemistry toolkit for LLMs and AI assistants, enabling molecular analysis, property prediction, and reaction synthesis tasks without domain-specific training.
    73
    Apache 2.0
  • F
    license
    B
    quality
    D
    maintenance
    Provides computational chemistry tools for LLMs, enabling molecular operations like SMILES processing and geometry manipulation via a modular agent and tool system.
    9
    -
  • A
    license
    Not graded
    quality
    A
    maintenance
    Enables generation of chemical structures, reactions, spectra, titration curves, 3D models, and more from natural language or SMILES, using RDKit for offline rendering and supporting formats like PNG, SVG, CDXML, and Anki decks.
    234 PyPI
    18
    Apache 2.0
  • A
    license
    Not graded
    quality
    A
    maintenance
    Connects AI assistants to a live ChemDraw window on Windows via COM automation, enabling drawing, editing, and organizing chemical structures directly in the open document. Supports structure insert/export, scope tables, shorthand groups, figure layout, chemistry QC, publication tools, annotations, polymer brackets, and TLC plates.
    1
    MIT