Skip to main content
Glama
kettly1260
by kettly1260

scifinder-route-mcp

NAS-hosted MCP server for indexing and searching reaction-step-level synthesis routes from local SciFinder exports. It is designed to run long-term on Docker/NAS with a read-only inbox, durable SQLite queue fallback, optional external OCR/LLM/vector/parser/structure-recognition APIs, and an operational Admin Web UI for trusted LAN/VPN deployments.

GHCR visibility note: if anonymous pull fails, open GitHub → Packages → scifinder-route-mcp → Package settings → Change visibility → Public. The compose file is already configured for ghcr.io/kettly1260/scifinder-route-mcp:latest.

Quick Start With Prebuilt Image

The published Docker image targets both linux/amd64 and linux/arm64.

git clone https://github.com/kettly1260/scifinder-route-mcp.git
cd scifinder-route-mcp
cp .env.example .env
mkdir -p nas-data nas-inbox
docker compose -f docker-compose.image.yml up -d

Then open:

Admin Web UI: http://<nas-host>:8001/
MCP HTTP:     http://<nas-host>:8000/mcp
Legacy SSE:   http://<nas-host>:8000/sse

Put SciFinder exports into nas-inbox, then click Scan Inbox in the Admin Web UI or call the MCP scan_inbox tool. Supported import formats are .pdf, .rtf, .rdf, .html, .htm, .mhtml, .mht, .md, .markdown, and .txt. The image compose file uses image: only and does not build locally.

Do not expose the Admin Web UI directly to the public internet. Use a trusted LAN/VPN or a reverse proxy with TLS and authentication. The Python default Admin bind address is 127.0.0.1; the Docker compose profiles explicitly bind 0.0.0.0 for NAS access.

Related MCP server: ketcher-mcp-server

Local Build Deployment

docker compose up -d --build

Persistent paths:

./nas-data  -> /data
./nas-inbox -> /inbox (read-only in the container)
./nas-data/uploads -> /data/uploads (HTTP upload and sidecar staging)

Parsing is asynchronous in the NAS profile. Jobs are stored durably in SQLite; after a container restart, interrupted running jobs are re-queued. Poll get_parse_job_status or list_parse_jobs until completion.

Environment and Runtime Config

Copy .env.example to .env. Docker-level settings such as published ports, volumes, container network, and restart policy belong in .env/Compose only. The Admin Web UI never edits Docker files and never controls host Docker.

Hot application config is read from /data/config.yaml; copy config.example.yaml to ./nas-data/config.yaml if desired. Hot-reloadable sections include:

server.async_jobs, server.max_workers, server.storage_backend
queue.backend, queue.redis_url
security.allow_external_paths, security.token, security.users
ingest.scan_extensions, ingest.upload_extensions, ingest.upload_max_bytes,
ingest.reject_file_type_mismatch, ingest.extract_visual_evidence
integrations.*
extraction.llm_schema_version, extraction.llm_prompt_profile, extraction.llm_cost_limit_usd
thresholds.verification_confidence_threshold
retention.evidence_retention_days, retention.cache_retention_days
security.upload_av_scan_enabled, security.upload_av_engine,
security.upload_av_endpoint, security.upload_av_fail_closed

Use MCP tools get_config, update_config, validate_config, and reload_config, or use the Admin Web UI.

MCP Transport

Docker deployments default to adaptive MCP transport mode:

SCIFINDER_ROUTE_TRANSPORT=auto
SCIFINDER_ROUTE_MCP_PATH=/mcp
SCIFINDER_ROUTE_SSE_PATH=/sse

In auto mode, the same container and port expose both MCP endpoints:

http://<nas-host>:8000/mcp  Streamable HTTP for modern MCP clients
http://<nas-host>:8000/sse  Legacy SSE for older MCP clients

/mcp handles MCP JSON-RPC requests such as initialize, tools/list, and tools/call; GET /mcp behavior is provided by FastMCP according to the MCP Streamable HTTP transport. /sse is retained for older clients that have not moved to Streamable HTTP.

For debugging or strict compatibility, force a single transport explicitly:

SCIFINDER_ROUTE_TRANSPORT=http
SCIFINDER_ROUTE_MCP_PATH=/mcp

or:

SCIFINDER_ROUTE_TRANSPORT=sse
SCIFINDER_ROUTE_SSE_PATH=/sse

Admin Web UI

The Admin Web UI provides operational controls for:

- health/status cards and mounted storage diagnostics
- token-protected config changes
- queue status, recent jobs, failed-job retry
- HTTP upload endpoint for sidecar/client upload
- LLM endpoint/model/enable toggle, schema version, prompt profile, cost limit
- embedding endpoint/model, vector rebuild, vector index status and errors
- OCR endpoint/model, OCR backlog status
- document parser endpoint/model, parser fallback and endpoint health
- structure recognition endpoint/model health
- PostgreSQL URL/backend status with SQLite fallback
- DOI low-confidence queue count
- evaluation latest metrics
- SQLite backup, retention dry-run cleanup, NAS storage usage
- compound registry count and search via MCP

Secret fields in the UI are not prefilled. Leaving token, Redis URL, or PostgreSQL URL blank preserves the current value; entering a value replaces it. Docker-owned settings such as published ports, volume mounts, and container networks remain in .env/Compose.

MCP Tools

Implemented tools:

health_check
get_config
update_config
validate_config
reload_config
scan_inbox
register_document
upload_document
upload_document_content
get_parse_job_status
list_parse_jobs
retry_parse_job
retry_failed_jobs
search_reaction_steps
get_reaction_step
get_reaction_provenance
record_doi_verification
reparse_document
export_evaluation_set
compute_evaluation_metrics
get_evaluation_status
rebuild_vector_index
get_vector_index_status
semantic_search_reaction_steps
search_compounds
get_compound
merge_compounds
search_by_smiles
recognize_structure_image
backup_database
get_storage_usage
cleanup_evidence_cache
test_integration_endpoint
list_export_batches
get_export_batch
unlink_document_from_batch

Feature Matrix

Area

Status

Notes

Docker/NAS adaptive MCP service

Implemented

Default auto mode exposes /mcp Streamable HTTP and /sse legacy SSE on the same port.

Single-transport override

Implemented

Set SCIFINDER_ROUTE_TRANSPORT=http or sse to expose only one transport.

GHCR multi-arch image workflow

Implemented

linux/amd64, linux/arm64. GHCR package visibility may need manual public setting.

Read-only inbox scanning

Implemented

/inbox mounted read-only.

HTTP upload staging

Implemented

POST /api/upload writes to /data/uploads; hash dedupe supported.

Sidecar watcher

Implemented

scifinder-route-sidecar polling CLI uploads stable files.

Durable queue

Implemented

SQLite queue is default; restart recovery and retry tools. Redis is optional/degraded via config status, not required.

SQLite storage

Implemented

Source documents, jobs, reaction steps, provenance, DOI verification, vector rows, compounds, metrics.

PostgreSQL backend

Runnable degraded integration

SCIFINDER_ROUTE_BACKEND=postgres tests connectivity and reports status; SQLite remains active fallback unless a Postgres adapter is added for a deployment.

pgvector

Optional/degraded

SQLite stores embeddings as JSON and cosine-searches them; Postgres/pgvector reports endpoint/backend status.

PDF/HTML/MHTML/text parsing

Implemented

Built-in parser remains fallback.

External document parser

Implemented

/parse JSON adapter plus built-in MinerU and PaddleOCR-VL adapters; provider chains fall back unless disabled.

OCR worker

Implemented adapter

/ocr JSON adapter plus built-in MinerU and PaddleOCR-VL adapters for image-only PDFs/low-text docs; errors are job errors, not service crashes.

Rule extraction

Implemented

Candidate blocks and structured fields.

LLM JSON structuring

Implemented adapter

OpenAI-compatible /chat/completions; strict JSON; invalid responses fall back to rule fields with metadata error.

Embedding/vector index

Implemented adapter

OpenAI-compatible /embeddings; rebuild/status/semantic search tools.

Compound registry

Implemented

CAS/SMILES/InChIKey text extraction, alias registry, reaction roles; RDKit optional.

Image structure recognition

Implemented adapter

/recognize adapter creates low-confidence image candidates; does not overwrite text evidence.

Multi-user authorization

Implemented

viewer, operator, admin roles via SCIFINDER_ROUTE_USERS or config users. Legacy single token maps to admin.

Evaluation metrics

Implemented

JSONL gold-set metrics and latest metric status.

Backup/retention

Implemented

SQLite backup, storage usage, evidence/cache cleanup dry-run.

Endpoint health checks

Implemented

LLM, embedding, OCR, parser, structure recognition, Postgres.

External API Schemas

All external services are optional. If a service is not configured or fails, the server returns a degraded/skipped/error status instead of crashing the process.

Embedding endpoint: POST <endpoint>/embeddings

{"model":"bge-m3","input":["text"]}

Expected response can be OpenAI-like:

{"data":[{"embedding":[0.1,0.2]}]}

LLM endpoint: POST <endpoint>/chat/completions, OpenAI-compatible. The assistant content must be strict JSON with reaction-step fields.

OCR endpoint: POST <endpoint>/ocr

{"model":"mineru-layout","file_path":"/data/uploads/file.pdf"}

Expected response:

{"text":"OCR text", "confidence":0.85}

Document parser endpoint: POST <endpoint>/parse

{"model":"parser-name","file_path":"/data/uploads/file.pdf"}

Expected response:

{"file_type":"pdf","title":"...","doi":"10....","chunks":[{"text":"...","page_number":1,"parser_name":"external","parser_version":"1"}]}

Built-in document OCR/parser providers:

  • paddleocr_vl: submits the local file as multipart to an AI Studio PaddleOCR-VL job endpoint such as https://paddleocr.aistudio-app.com/api/v2/ocr/jobs, polls the job, and reads the provider result JSON.

  • mineru: submits the local file as multipart to <endpoint>/file_parse with return_md=true, then imports returned Markdown/text into parsed chunks.

Provider fallback chains can be configured with single-provider compatibility fields or ordered lists:

integrations:
  ai_providers:
    - id: paddleocr
      name: PaddleOCR AI Studio
      format: paddleocr_vl
      endpoint: https://paddleocr.aistudio-app.com/api/v2/ocr/jobs
      api_key: ${PADDLEOCR_TOKEN}
      enabled_models: [PaddleOCR-VL-1.6]
    - id: mineru
      name: MinerU
      format: mineru
      endpoint: https://mineru.example/api
      api_key: ${MINERU_TOKEN}
      enabled_models: [mineru]
  ocr_provider_ids: [paddleocr, mineru]
  document_parser_provider_ids: [mineru, paddleocr]
  document_parser_fallback: true

Structure recognition endpoint: POST <endpoint>/recognize

{"model":"decimer","image_path":"/data/evidence/page1.png"}

Expected response:

{"structures":[{"smiles":"CCO","confidence":0.7}]}

Sidecar Watcher

Create sidecar.yaml on a client machine:

watch_dir: /path/to/scifinder/exports
server_url: http://nas-host:8001
token: change-me
include_patterns:
  - "*.pdf"
  - "*.html"
settle_seconds: 3
upload_mode: http
poll_seconds: 2

Run:

scifinder-route-sidecar sidecar.yaml

The sidecar polls by default and does not require watchdog, making it suitable for Windows/macOS/Linux clients.

Authorization

Legacy single-token mode:

SCIFINDER_ROUTE_TOKEN=change-me

Multi-user token mode:

SCIFINDER_ROUTE_USERS=alice:viewer-token:viewer,bob:operator-token:operator,root:admin-token:admin

Roles:

viewer   search/read/status
operator scan/reparse/retry/vector/evaluation/integration tests
admin    config/backup/cleanup/secret operations

Development

python -m pytest -q

Optional Docker check:

docker compose build
docker compose -f docker-compose.image.yml config

Available Tools

32 tools
backup_databaseC

Create a SQLite database backup, or report Postgres backup guidance.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 cover behavioral traits. It does not disclose potential destructive actions (e.g., overwriting existing backups), required permissions, rate limits, or side effects. The output format is not described despite an output schema existing.

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 and concise, but it sacrifices crucial information. It is well-structured but under-specified.

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 two parameters, no descriptions, no annotations, and ambiguous behavior (backup or guidance), the description is insufficient for correct invocation. The agent lacks understanding of parameter requirements and tool behavior.

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%, meaning the input schema provides no descriptions. The tool description does not explain the purpose or expected values of 'output_path' and 'token', leaving the agent without semantic understanding.

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 specifies the resource (SQLite database backup or Postgres backup guidance) and the actions (create/report). It clearly distinguishes between two modes, though the 'or' could be seen as ambiguous. Sibling tools do not include similar backup tools, so differentiation is not an issue.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives, no prerequisites, and no conditions for choosing SQLite vs Postgres mode. The description leaves the agent 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.

cleanup_evidence_cacheC

Clean generated evidence/cache files without deleting source documents.

ParametersJSON Schema
NameRequiredDescriptionDefault
dry_runNo
max_age_daysNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 must fully disclose behavior. It only states the action and what is not deleted, but lacks details on what files are affected, safety implications, or side effects (e.g., whether the cache is regenerated automatically).

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 very short (9 words) and front-loaded, but it lacks structure. Every word is necessary, but the brevity 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?

Given three parameters and a non-trivial operation (cleaning files), the description is insufficient. It does not explain return values (even though output schema exists), usage context, or parameter meanings. Sibling tools like backup_database suggest related operations but no comparison.

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 three parameters (dry_run, max_age_days, token). The values and their effects are entirely undocumented.

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

Purpose5/5

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

The description clearly states the tool 'cleans generated evidence/cache files' and explicitly excludes source documents, which effectively distinguishes it from siblings like backup_database or delete operations.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., backup_database or merge_compounds). The description does not mention prerequisites, contraindications, or typical use cases.

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

compute_evaluation_metricsC

Compute regression metrics from a gold-set JSONL file.

ParametersJSON Schema
NameRequiredDescriptionDefault
gold_set_pathYes
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 must cover behavioral traits. It only states the basic function without disclosing side effects, authentication needs, rate limits, or what happens on failure. The output schema exists but the description adds no behavioral context.

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, but it lacks important details. It is not verbose, but it is also not sufficiently informative.

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 that there is an output schema, return values are covered. However, the description misses prerequisites, expected file format for the gold set, and token usage. Incomplete for a 2-parameter tool with no named parameters.

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 what 'gold_set_path' or 'token' mean. No additional semantics beyond the schema are provided.

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 verb 'Compute' and the resource 'regression metrics from a gold-set JSONL file.' It is specific and distinguishes from sibling tools, none of which compute metrics.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No prerequisites, when-not-to-use, or explicit context provided.

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

export_evaluation_setC

Export extracted reaction steps as JSONL for manual labeling and regression checks.

ParametersJSON Schema
NameRequiredDescriptionDefault
output_pathNo
limitNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description carries full burden. Only states export action without disclosing side effects, permissions, pagination behavior, or whether it's read-only. Minimal behavioral context.

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?

Single sentence without waste, but lacks structured breakdown of what the tool does versus parameter details. Adequately concise but incomplete.

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 3 parameters and no annotations, description fails to explain how parameters affect behavior or interpret output schema. Missing critical setup and usage 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%, and description provides no information about parameters (output_path, limit, token). Agent cannot infer their purpose or constraints from description 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?

Description clearly states verb 'Export', resource 'extracted reaction steps', format 'JSONL', and explicit purpose 'for manual labeling and regression checks'. Distinguishes from sibling tools like compute_evaluation_metrics and get_evaluation_status by focusing on raw data export.

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

Usage Guidelines3/5

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

Implies usage for manual labeling and regression checks, but no explicit when-to-use or when-not-to-use guidance relative to sibling tools like compute_evaluation_metrics or get_evaluation_status.

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

get_compoundC

Return compound metadata, aliases, and linked reactions.

ParametersJSON Schema
NameRequiredDescriptionDefault
compound_idYes
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, yet the description does not disclose any behavioral traits such as idempotency, safety, or side effects. It only states the return content, lacking context on performance, errors, or permissions.

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

Conciseness5/5

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

A single, concise sentence that efficiently conveys the tool's purpose with no redundant 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?

Despite having an output schema, the description omits details about what constitutes 'metadata', 'aliases', or 'linked reactions'. For a tool with two undocumented parameters and no annotations, more context is needed.

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 adds no meaning to the parameters. 'compound_id' and 'token' are not explained beyond their names, leaving an agent to infer their purpose.

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

Purpose5/5

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

Clearly states the tool returns compound metadata, aliases, and linked reactions. The verb 'return' and specific resource differentiation from sibling tools like search_compounds make 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?

No guidance on when to use this tool versus alternatives. For example, it does not specify that it is for retrieving a specific compound by ID, nor does it mention search_compounds for listing.

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

get_configA

Return the effective application config. Secrets are masked unless include_secrets is true.

ParametersJSON Schema
NameRequiredDescriptionDefault
include_secretsNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.6/5.0
Behavior3/5

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

Discloses that secrets are masked unless include_secrets is true, but does not explain the token parameter's role or any authentication implications. With no annotations, more detail would be beneficial.

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 that conveys essential information without wasted words. Front-loaded with the main action.

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

Completeness3/5

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

While an output schema exists, the description fails to explain the token parameter, which is a gap. For a simple tool, it is adequate but not fully complete.

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

Parameters2/5

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

Schema coverage is 0%, so description must compensate. It explains include_secrets by referencing masking behavior, but completely omits the token parameter, leaving its purpose unclear.

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 verb 'Return' and the resource 'effective application config', distinguishing it from sibling tools like update_config or reload_config. It also adds a specific behavioral detail about secrets masking.

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

Usage Guidelines3/5

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

The description implies use for reading config but does not explicitly state when to use versus alternatives like update_config or validate_config. No exclusions or context provided.

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

get_evaluation_statusC

Return the latest evaluation metrics.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2/5.0
Behavior2/5

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

No annotations exist, so the description must fully disclose behavior. It only says 'Return the latest evaluation metrics', implying a read operation, but fails to mention if it triggers computation, requires prerequisites, or any side effects. The lack of details 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, making it concise, but it sacrifices necessary detail. It front-loads the purpose but is too brief to be informative. It could be longer to include parameter context or usage hints.

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 has no annotations, an output schema (unseen), and 33 sibling tools, the description is extremely incomplete. It fails to clarify what evaluation metrics are, how the 'latest' is determined, and how this tool relates to siblings like 'compute_evaluation_metrics'.

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 input schema has one optional parameter 'token' with 0% description coverage. The description does not explain the parameter's purpose, format, or when to provide it. Since schema coverage is low, the description should compensate but does not.

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

Purpose2/5

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

The description states 'Return the latest evaluation metrics', which is a clear verb and resource. However, it's vague about what 'evaluation metrics' refers to and doesn't distinguish from sibling tools like 'compute_evaluation_metrics', making it difficult to know if this returns stored or computed metrics.

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 alternatives like 'compute_evaluation_metrics' or 'get_compound'. The description implies a read operation but offers no context or exclusions.

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

get_parse_job_statusC

Return parse job status, stage, and error details.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations provided, so the description carries full burden. It only states returns status, stage, and error details, without disclosing whether it is read-only, requires authentication, or other behavioral traits.

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 wasted words, but it is too brief and lacks critical information. Conciseness is positive, but completeness is lacking.

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?

While an output schema exists, the description does not elaborate on what 'stage' or 'error details' entail. For a status tool with two parameters, more context would be helpful for effective use.

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 either parameter ('job_id' or 'token'). The tool needs parameter semantics, but none are provided 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 'Return parse job status, stage, and error details' clearly states the verb and resource, distinguishing this status tool from sibling tools like 'list_parse_jobs' (listing) and 'retry_parse_job' (modification).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives such as 'list_parse_jobs' or 'retry_parse_job'. The description does not provide context for selection.

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

get_reaction_provenanceC

Return source text/page/parser provenance for a reaction step.

ParametersJSON Schema
NameRequiredDescriptionDefault
reaction_step_idYes
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

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 carry the burden of behavioral disclosure. It only states that provenance is returned, but does not disclose whether the operation is read-only, requires authentication, has side effects, or any other behavioral traits.

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 that is front-loaded with the verb and resource. It is concise but arguably too brief, missing important details that could be added without excessive verbosity.

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 two parameters and no annotations, but has an output schema (not described), the description is incomplete. It does not explain the nature of the provenance returned, any constraints, or how to use the optional token parameter.

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%, meaning no descriptions exist in the input schema itself. The description does not add any meaning to the parameters 'reaction_step_id' or 'token', leaving the agent to infer their purpose from the tool name 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 uses a clear verb 'Return' and specifies the resource as 'source text/page/parser provenance for a reaction step', which differentiates it from siblings like 'get_reaction_step' that likely return the step itself. However, it does not explicitly distinguish from other provenance-related tools.

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

Usage Guidelines2/5

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

The description provides no guidance on when to use this tool versus alternatives. Sibling tools include 'get_reaction_step', 'search_reaction_steps', etc., but no context is given for selecting this tool over them.

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

get_reaction_stepC

Return one structured reaction step.

ParametersJSON Schema
NameRequiredDescriptionDefault
reaction_step_idYes
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.5/5.0
Behavior1/5

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

No annotations are provided, and the description is too brief to disclose any behavioral traits such as side effects, authentication requirements, or rate limits. It does not add value beyond the basic action.

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 very short (5 words), which is concise but lacks necessary detail. It could be expanded without losing conciseness.

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 presence of a required parameter and sibling tools, the description is incomplete. It does not explain what a 'reaction step' is or how the token parameter affects the request. The output schema existence reduces the burden, but the description still fails to provide sufficient 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?

The description does not explain the parameters (reaction_step_id, token) or their semantics. With 0% schema description coverage, the description fails to compensate, leaving the agent to infer meaning from 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 'Return one structured reaction step' clearly specifies the verb (Return) and the resource (structured reaction step). It differentiates from sibling tools like 'search_reaction_steps' by indicating a single item.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives (e.g., search_reaction_steps). No prerequisites or context for selecting this tool are provided.

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

get_storage_usageC

Return NAS data/upload/evidence storage usage.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.8/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 burden. It only states the tool returns usage, but does not disclose potential side effects, authentication needs, or behavior with the optional token parameter.

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

Conciseness5/5

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

The description is a single, clear sentence with no unnecessary words. It is extremely concise and front-loaded.

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

Completeness3/5

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

The tool is simple and has an output schema, so the description is minimally adequate. However, it could specify the format or categories of storage usage (e.g., breakdown by data/upload/evidence).

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 adds no meaning to the sole optional param 'token'. The description does not explain the param's purpose or effect.

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 returns storage usage for NAS data/upload/evidence, specifying the verb 'return' and the resource. However, it does not differentiate from sibling tools, though the specific resource makes it distinct enough.

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 alternatives. There is no mention of prerequisites, context, or exclusion criteria.

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

get_vector_index_statusB

Return vector index coverage, model, and last error.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations provided, and the description only lists return values without behavioral details like side effects, permissions, or cost. The agent cannot know if this is read-only or has other implications.

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

Conciseness5/5

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

Single sentence front-loads the verb and includes only essential information with no wasted words.

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

Completeness3/5

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

The core function is clear and return values are covered by the output schema, but the missing parameter documentation and lack of usage context make it incomplete for an agent to use confidently.

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 sole parameter 'token' is not described in the schema (0% coverage) and the description does not mention it at all, leaving the agent to guess its purpose and how to use it.

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 returns vector index coverage, model, and last error, which is a specific and distinct function from siblings like rebuild_vector_index or get_config.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives; no mention of prerequisites or context, so the agent has no information about when it is appropriate to call.

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

health_checkB

Return server health, configured paths, and indexed object counts.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

The description mentions what is returned, implying a read-only operation, but does not disclose potential side effects, authorization needs, or performance impact. With no annotations, more detail would be helpful, but the core behavior is clear.

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

Conciseness5/5

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

A single sentence effectively communicates the tool's purpose without any fluff. Every word contributes meaning.

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?

The description does not cover the optional 'token' parameter, which is a significant gap. Although an output schema exists, the lack of parameter documentation makes the description incomplete for agent decision-making.

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 has one optional parameter 'token', but the description does not mention it at all. With 0% schema coverage, the description fails to explain what 'token' does or when to provide it.

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 returns server health, configured paths, and indexed object counts. The verb 'return' and specific resources distinguish it from sibling tools like backup_database or cleanup_evidence_cache.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. While a health check's purpose is generally understood, the description lacks explicit when-to-use or when-not-to-use instructions.

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

list_parse_jobsC

List recent parse jobs, optionally filtered by status.

ParametersJSON Schema
NameRequiredDescriptionDefault
statusNo
limitNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.9/5.0
Behavior2/5

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

The term 'recent' is ambiguous and not defined. Pagination via token and limit parameters are not mentioned. No disclosure of side effects or rate limits, and no annotations provided to compensate.

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?

Single sentence, no wasted words. However, additional structured details could be added without losing conciseness.

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 output schema exists, return values are covered. But the description lacks details on default limit, pagination behavior, and valid status values, making it incomplete for effective use.

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

Parameters2/5

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

Only status filtering is mentioned, but not the values it accepts. Limit and token parameters are completely omitted despite 0% schema description coverage.

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 lists recent parse jobs with optional status filtering. It distinguishes from sibling 'get_parse_job_status' which targets a single job.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like 'get_parse_job_status' or 'retry_parse_job'. No context on prerequisites or limitations.

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

merge_compoundsB

Merge source compound aliases/reaction links into a target compound.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_compound_idYes
target_compound_idYes
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

No annotations provided. The description implies mutation ('merge') but lacks details on side effects, reversibility, or authorization needs. Important behavioral traits like idempotency or conflict handling 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.

Conciseness5/5

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

A single, clear sentence with no extraneous words. Efficient and to the point.

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 complexity of a merge operation and zero schema coverage, the description is insufficient. It does not address the merge semantics, output format, or edge cases. An output schema exists but is not described.

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 names source_compound_id and target_compound_id but does not explain their format or purpose beyond the obvious. The optional 'token' parameter is entirely undeclared in meaning.

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 verb 'merge' and the resources 'compound aliases/reaction links' into a target compound. It distinguishes itself from sibling tools like 'get_compound' and 'search_compounds' by being a merge operation.

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 explicit guidance on when to use this tool versus alternatives, no prerequisites or exclusions mentioned. The description is purely functional without usage context.

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

rebuild_vector_indexC

Generate embeddings for reaction steps using the configured embedding endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

With no annotations, the description should disclose side effects (e.g., whether previous embeddings are overwritten) and dependencies (e.g., configured embedding endpoint). It only states the action without addressing these, leaving significant behavioral gaps.

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 14-word sentence, concise and front-loaded with the action. However, it is too brief to be fully useful, missing important details that would justify its length.

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 (rebuilding a vector index) and the presence of two parameters, the description is insufficient. It does not explain scope, prerequisites, or when the operation is needed, leaving the agent underinformed despite the output schema.

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 has 0% description coverage, and the description does not mention either parameter ('limit', 'token'). The agent receives no guidance on what these parameters control or how to use them.

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 'Generate embeddings for reaction steps' which is a specific verb and resource. It adds context about using the configured embedding endpoint. However, it does not clarify if this constitutes a full rebuild or incremental update, leaving some ambiguity.

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 like 'get_vector_index_status' or 'semantic_search_reaction_steps'. There are no explicit conditions, exclusions, or alternatives mentioned.

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

recognize_structure_imageC

Send an image region to a configured MolScribe/DECIMER/OSRA-style endpoint and register candidate SMILES.

ParametersJSON Schema
NameRequiredDescriptionDefault
image_pathYes
reaction_step_idNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior2/5

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

No annotations provided, so description must disclose all behavioral traits. It mentions 'register candidate SMILES' implying a side effect (registration) but does not explain if the endpoint modifies data, what happens on failure, or if there are rate limits. The word 'candidate' hints at verification but no further detail.

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

Conciseness5/5

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

Single concise sentence with no redundant information. Every word is necessary to convey the action.

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 0% schema coverage, no annotations, and an output schema (unseen), the description should provide more context. Missing: explanation of output, error handling, configuration of endpoint, and relationship to other tools. It is too sparse for effective use.

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 description must explain parameters. It does not describe any parameter: image_path format, purpose of reaction_step_id (association with reaction step?), token (authentication?). The description adds no meaning beyond the raw 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 clearly states the tool's action: sending an image region to an optical structure recognition endpoint and registering candidate SMILES. The verb 'send' and nouns 'image region', 'endpoint', 'register candidate SMILES' provide specific purpose. This distinguishes it from sibling tools like search_by_smiles or search_compounds.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. No mention of prerequisites, context such as needing a configured endpoint, or when not to use it (e.g., for full images, not regions). The description assumes the agent already knows when to invoke this tool.

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

record_doi_verificationC

Record DOI source verification performed by an agent or browser workflow.

ParametersJSON Schema
NameRequiredDescriptionDefault
reaction_step_idYes
doiYes
verified_fieldsYes
paper_titleNo
original_paper_excerptNo
verification_confidenceNo
verifier_agentNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 should disclose behavioral traits. It only states 'Record...' without specifying whether it creates or updates records, or any side effects. Missing information on prerequisites, idempotency, or error conditions.

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, but it is under-specified given the tool's complexity. It lacks structure and does not front-load key information about required inputs.

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 (including nested objects), 0% parameter documentation, and an output schema, the description is far from complete. The agent cannot effectively use this tool without additional 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%, and the description adds no meaning for any of the 8 parameters. The agent gets no help understanding 'verified_fields', 'verification_confidence', or other 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?

The description clearly states the verb 'Record' and the resource 'DOI source verification', indicating the tool's purpose. It also specifies the performer ('agent or browser workflow'). However, it does not mention the link to reaction steps, which is evident from the required parameter 'reaction_step_id'.

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 alternatives. Sibling tools like 'get_reaction_step' or 'search_reaction_steps' might be related, but the description does not differentiate usage conditions.

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

register_documentB

Register and parse a local SciFinder export file already visible to the server.

ParametersJSON Schema
NameRequiredDescriptionDefault
file_pathYes
reparseNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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

With no annotations provided, the description must fully disclose behavioral traits, but it only states the action and precondition. It does not mention side effects (e.g., whether registers overwrite or create new entries), idempotency, permissions required, or error behavior. The existence of an output schema is not leveraged to clarify return values or status.

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 redundant words. It front-loads the key action and resource. However, the extreme brevity leaves significant gaps, but as a scoring dimension for conciseness alone, it is well-structured.

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 parameters, no schema coverage, no annotations), the description is severely incomplete. It fails to explain parameters, return values (despite an output schema existing), or provide enough context for correct invocation. The agent would need external knowledge to use this tool reliably.

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%, yet the description provides no explanation of any parameter. It hints at 'file_path' via 'local ... file', but does not clarify the meaning of 'reparse' (a boolean with default false) or 'token' (nullable string). The agent receives no guidance on how to set these fields.

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 action ('register and parse'), the resource type ('SciFinder export file'), and a critical precondition ('already visible to the server'). This distinguishes it from siblings like 'upload_document' (which handles file transfer) and 'reparse_document' (which re-parses existing registered documents).

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

Usage Guidelines3/5

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

The description implies usage context (must be a local file already on the server), but does not explicitly state when to use this vs. alternatives, such as 'upload_document' for new files or 'reparse_document' for re-parsing. No exclusion criteria or prerequisites beyond the file availability are given.

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

reload_configB

Reload hot application config from config.yaml without restarting the container.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior2/5

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

With no annotations, the description provides only one behavioral trait ('without restarting the container'). It omits details like side effects, error handling, or whether the token parameter authenticates or modifies behavior.

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

Conciseness5/5

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

The description is a single, front-loaded sentence without any redundancy. Every word adds value, making it highly efficient for an agent.

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 minimal schema documentation, lack of annotations, and absence of parameter explanation, the description is too brief. It does not address return values, success/failure conditions, or config change consequences, which is insufficient for a config-reload operation.

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 sole parameter 'token' is not described in the schema (0% coverage) and the description does not explain its purpose or role, leaving the agent without guidance on when or how to use it.

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 ('reload'), the resource ('hot application config'), the source ('config.yaml'), and a key constraint ('without restarting the container'). This clearly differentiates it from siblings like update_config or get_config.

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

Usage Guidelines3/5

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

The description implies usage for reloading config without restart, but does not explicitly state when to use this tool vs. alternatives (e.g., update_config), nor does it mention prerequisites or when not to use it.

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

reparse_documentC

Clear extracted reactions for a document and parse it again.

ParametersJSON Schema
NameRequiredDescriptionDefault
document_idYes
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.4/5.0
Behavior2/5

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

No annotations exist, so description must carry full burden. It indicates mutation (clear and re-parse) but does not disclose any side effects, permission requirements, or state changes.

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?

Single sentence is concise, but it sacrifices necessary detail. The description is not verbose, but it is under-informative for an agent to infer proper use.

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 no annotations, low parameter coverage, and an output schema not described, the tool definition lacks sufficient detail for an agent to use it reliably.

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 has 0% description coverage, and the description does not explain the two parameters (document_id and token). The purpose of 'token' is entirely unclear.

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?

Description clearly states the action: clear extracted reactions and parse the document again. It is specific about the verb-resource relationship and distinguishes from related tools like register_document or upload_document.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like retry_parse_job. No prerequisites or context for appropriate use are provided.

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

retry_failed_jobsC

Retry recent failed parse jobs.

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.7/5.0
Behavior2/5

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

No annotations provided, so the description must carry the full burden. It does not disclose whether the retry is destructive, idempotent, or has rate limits. Merely stating 'retry' is insufficient.

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?

One sentence is concise but too minimal; it fails to include necessary details like parameter explanations or usage notes, which would not significantly increase length.

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?

While an output schema exists, the description lacks key context: no parameter semantics, no behavioral traits, no differentiation from sibling tools. Incomplete for a tool with no annotations.

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 adds no meaning to 'limit' or 'token'. Their roles (pagination, count limit) are entirely undocumented.

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

Purpose5/5

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

The description clearly states the verb 'retry' and the resource 'recent failed parse jobs', which is specific and distinguishes it from the sibling 'retry_parse_job' (likely for individual jobs).

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives like 'retry_parse_job'. The description implies a batch operation but lacks explicit context or exclusion criteria.

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

retry_parse_jobB

Retry a failed or completed parse job by moving it back to the durable queue.

ParametersJSON Schema
NameRequiredDescriptionDefault
job_idYes
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.3/5.0
Behavior3/5

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

With no annotations, the description carries the full burden. It discloses that the job is moved back to the durable queue, but does not mention side effects, required permissions, or whether retrying completed jobs causes duplicates. Adequate 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.

Conciseness4/5

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

Single sentence, no fluff, action first. However, it sacrifices parameter details for brevity. Could include a brief note on required vs optional parameters.

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

Completeness3/5

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

Given the tool has 2 parameters and an output schema (not shown), the description covers the core action but omits parameter semantics and return value expectations. Gaps remain for effective 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?

Schema description coverage is 0%, and the description does not explain the purpose or usage of either 'job_id' or 'token'. The schema shows they exist, but the description adds no meaning beyond that.

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

Purpose5/5

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

The description clearly specifies the verb 'retry', the resource 'parse job', and the mechanism 'moving it back to the durable queue'. It distinguishes from sibling 'retry_failed_jobs' by focusing on a single job, and includes the scope of both failed and completed jobs.

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

Usage Guidelines3/5

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

The description implies usage when a parse job has failed or completed, but provides no explicit guidance on when not to use this tool or alternatives like 'retry_failed_jobs'. The context is sufficient but lacks exclusion criteria.

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

scan_inboxB

Scan the NAS inbox for supported SciFinder exports and queue/register new files.

ParametersJSON Schema
NameRequiredDescriptionDefault
reparseNo
limitNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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

With no annotations, the description provides minimal behavioral context. It mentions scanning and queueing but does not disclose side effects (e.g., whether existing data is modified), permissions needed, or the meaning of parameters like 'reparse' or 'limit'.

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, well-formed sentence with no redundancy. However, it could be slightly expanded to include parameter details without losing conciseness.

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 three parameters and an output schema, the description lacks completeness. It does not explain return values, pagination (implied by limit/token), or the difference between 'queue' and 'register'. It misses the opportunity to fully specify usage in 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?

The input schema has three parameters (reparse, limit, token) with zero coverage in the description. The description does not explain their purpose, defaults, or expected behavior, leaving the agent without guidance for correct invocation.

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 action ('Scan the NAS inbox'), target resource ('supported SciFinder exports'), and outcome ('queue/register new files'). It distinguishes itself from sibling tools, none of which mention NAS inbox or SciFinder.

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

Usage Guidelines3/5

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

The description implies usage for registering SciFinder exports but offers no explicit guidance on when to use this tool versus alternatives, nor does it mention when not to use it or any prerequisites.

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

search_by_smilesB

Normalize a SMILES string when RDKit is available, then search compounds.

ParametersJSON Schema
NameRequiredDescriptionDefault
smilesYes
limitNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

No annotations are provided, so the description carries full burden. It discloses conditional normalization but does not explain behavior when RDKit is unavailable, return format, pagination, or side effects.

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

Conciseness5/5

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

The description is a single, well-structured sentence that front-loads the primary action without any extraneous words.

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

Completeness2/5

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

Despite the presence of an output schema, the description lacks sufficient context about parameters and behavioral edge cases. It does not adequately differentiate from the sibling search_compounds tool.

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

Parameters2/5

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

Schema description coverage is 0%, and the description only vaguely addresses the 'smiles' parameter. The 'limit' and 'token' parameters are not mentioned at all, leaving their semantics unclear.

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: normalize a SMILES string (conditional on RDKit) then search compounds. It distinguishes from siblings like search_compounds by specifying the input type and normalization step.

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 mentions 'when RDKit is available' but does not provide explicit guidance on when to use this tool versus alternatives like search_compounds, nor does it state prerequisites or when not to use it.

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

search_compoundsB

Search the compound registry by name, CAS, SMILES, or InChIKey.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
limitNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.3/5.0
Behavior3/5

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

No annotations provided, so description carries full burden. It discloses the searchable fields and resource, but not behaviors like case sensitivity, partial matching, or pagination behavior. Adequate for a simple search tool but lacks detail.

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

Conciseness5/5

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

Single sentence that is front-loaded with the key action and resource. No extraneous words. Efficient and to the point.

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 3 parameters, no required fields, and an output schema, the description is too brief. It does not explain pagination, default behavior, or how to differentiate from sibling tools like search_by_smiles. Lacks completeness for effective agent use.

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

Parameters2/5

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

Schema coverage is 0%, so description must explain parameters. It only explains the 'query' parameter (one of the search fields), but fails to describe 'limit' or 'token' (pagination). The description adds only marginal 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?

Description clearly states the action (search), resource (compound registry), and specific search fields (name, CAS, SMILES, InChIKey). This distinguishes it from sibling tools like get_compound (retrieval by ID) and search_by_smiles (SMILES-only).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. For example, does not mention that get_compound is for when you have a compound ID, or that search_by_smiles is more specific. Agent must infer usage from the description alone.

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

search_reaction_stepsB

Search extracted reaction steps by text and structured condition filters.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNo
reagentNo
solventNo
document_idNo
min_confidenceNo
limitNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

B3.1/5.0
Behavior2/5

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

Annotations are absent, so the description must fully convey behavioral traits. It only states 'Search extracted reaction steps', which implies a read operation, but omits details on pagination (limit and token parameters), side effects, or how filters combine. The agent lacks information about potential behaviors like result ordering or threshold effects.

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

Conciseness4/5

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

The description is a single, well-formed sentence of 9 words – very concise. It front-loads the core action. However, it might be too terse to fully clarify usage; still, it avoids fluff and earns its place.

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?

The tool has 7 parameters (0% schema coverage) and no annotations, but has an output schema. The description only covers the general search concept, lacking details on combining text and structured filters, the nature of the query (full-text? exact?), and pagination behavior. Given the complexity of a search tool with multiple filters, this is insufficient.

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

Parameters3/5

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

Schema description coverage is 0%, so the description must compensate. It mentions 'text and structured condition filters' which hints at parameters like query, reagent, and solvent, but does not explain the exact role of each parameter (e.g., how 'query' interacts with fields, or that 'limit' and 'token' control pagination). This adds moderate value but leaves gaps.

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 'Search extracted reaction steps by text and structured condition filters' clearly states the tool's purpose: it searches for reaction steps using both a text query and structured filter parameters (reagent, solvent, etc.). The verb 'Search' is appropriate, and it distinguishes from siblings like 'get_reaction_step' (retrieves by ID) and 'semantic_search_reaction_steps' (likely a different search method).

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 like 'semantic_search_reaction_steps', nor does it specify when not to use it. Given the extensive sibling list (31 tools), explicit usage context would help the agent choose correctly.

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

semantic_search_reaction_stepsC

Search reaction steps semantically using the configured embedding endpoint.

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYes
limitNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
resultYes

TDQS

C2.6/5.0
Behavior2/5

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

With no annotations, the description should disclose behavioral traits like read-only nature, authentication needs, or rate limits. It only says 'using the configured embedding endpoint' but no further behavior details.

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, concise, but it omits important contextual information. It earns a 3 for being short but not sufficiently informative.

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 presence of an output schema and no annotations, the description is too brief. It does not explain the output format, pagination, or how the token parameter works, leaving gaps for an AI agent.

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

Parameters2/5

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

Schema coverage is 0%, so the description needs to explain parameters. It mentions 'query' implicitly but gives no details on 'limit' or 'token' semantics, nor does it describe the embedding endpoint.

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

Purpose4/5

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

The description uses 'Search reaction steps semantically' which clearly identifies the action and resource, and the 'semantically' distinguishes it from a keyword search. However, it does not explicitly compare with the sibling tool 'search_reaction_steps'.

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

Usage Guidelines2/5

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

No guidance on when to use this tool vs alternatives. The description does not provide context for when semantic search is appropriate or mention exclusions.

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

test_integration_endpointB

Test one configured integration endpoint: llm, embedding, ocr, document_parser, structure_recognition, postgres.

ParametersJSON Schema
NameRequiredDescriptionDefault
kindYes
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/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 states 'test one configured integration endpoint' without explaining what testing entails (e.g., sends a request, returns success/failure, modifies state). The lack of behavioral context 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.

Conciseness4/5

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

The description is a single, concise sentence that front-loads the essential information. There is no superfluous text, though it could benefit from slightly more detail without losing conciseness.

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 two parameters, one required, and an output schema (not shown), the description is too sparse. It does not describe the return value, error conditions, or any side effects. A testing tool should provide more context for safe and effective use.

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 has 0% description coverage, so the description must add meaning for both parameters. It lists possible values for 'kind' (llm, embedding, etc.), which is helpful, but does not explain the 'token' parameter at all (nullable, default null). This leaves ambiguity about its purpose and usage.

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 (test), the resource (configured integration endpoint), and lists the specific endpoint kinds (llm, embedding, etc.). This is specific and distinguishes it from sibling tools, which focus on other operations like backup, cleanup, or search.

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

Usage Guidelines3/5

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

The description implies the tool is used to test integration endpoints, but it does not provide explicit guidance on when to use it versus alternatives, nor does it mention prerequisites or when not to use it. The purpose is clear, but context for decision-making is lacking.

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

update_configB

Merge hot-reloadable application config updates into config.yaml and reload them.

ParametersJSON Schema
NameRequiredDescriptionDefault
updatesYes
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3/5.0
Behavior2/5

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

No annotations provided, so description must fully disclose behavior. It states merging and reloading, but lacks details on error handling, atomicity, rollback, or the role of the 'token' parameter. This is insufficient for a mutation 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 a single, front-loaded sentence that efficiently conveys the core action. It is concise but could benefit from a brief mention of parameter usage without becoming verbose.

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?

While an output schema exists (so return value documentation is not needed), the description lacks crucial context about parameter usage and behavioral details. The tool has a nested object parameter and no parameter explanations, making it incomplete for an agent.

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 the 'updates' object structure nor the purpose of the optional 'token' parameter. Both parameters are entirely undocumented beyond the 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 clearly states the action ('Merge hot-reloadable application config updates'), the target ('config.yaml'), and the side effect ('reload them'). This distinguishes it from siblings like 'get_config' and 'validate_config'.

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

Usage Guidelines3/5

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

The description implies it is for updating and reloading config, but does not explicitly tell when to use it versus alternatives like 'validate_config' or 'reload_config'. No exclusion criteria or prerequisites are mentioned.

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

upload_documentC

Copy a server-visible file into the upload area, then register and parse it.

ParametersJSON Schema
NameRequiredDescriptionDefault
source_pathYes
filenameNo
reparseNo
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

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 must carry full burden. It only states the three steps (copy, register, parse) but fails to disclose behavioral traits like whether the source file is modified, whether registration requires authentication, or if parsing is synchronous. No side effects or permissions are mentioned.

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 10-word sentence, concise to a fault. It sacrifices necessary detail for brevity. While front-loaded and efficient, it could be restructured with bullet points or additional sentences without losing conciseness.

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 4 parameters (with no schema descriptions), an output schema, and many siblings, the description is insufficient. It does not explain parameter behaviors, return value, error conditions, or integration with other tools like register_document.

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 adds no parameter details. The meaning of source_path (file path on server?), filename (why null?), reparse (what exactly is re-parsed?), and token (authentication token?) are left entirely to inference from 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 the tool copies a server-visible file, registers it, and parses it. The verb-resource combination is specific and distinct from siblings like register_document (which omits the copy step) and reparse_document (which only re-parses).

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives. For instance, when to use register_document directly vs upload_document is not addressed. Prerequisites such as file accessibility or permissions are omitted.

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

validate_configB

Validate the current application config and report settings that require container restart.

ParametersJSON Schema
NameRequiredDescriptionDefault
tokenNo

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.1/5.0
Behavior3/5

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

No annotations provided, so description bears full burden. It discloses core behavior (validate and report restart-requiring settings), but lacks detail on side effects, authentication needs, or what validation entails. Adequate but not comprehensive.

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

Conciseness5/5

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

Single sentence, concise and direct. No redundant information. Every word adds value.

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?

Despite having an output schema, the description lacks parameter documentation and usage context. With one undocumented parameter and many sibling tools, the description is incomplete for safe and correct 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?

Input schema has one optional parameter 'token' with 0% description coverage. The description provides no explanation of what 'token' is for, leaving the agent without guidance. This is a major gap given low schema coverage.

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 validates application config and reports settings needing restart. It uses specific verb 'validate' and specific resource 'config', distinguishing it from siblings like get_config or update_config.

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 explicit guidance on when to use this tool vs alternatives. It implies usage after config changes, but does not mention prerequisites, when not to use, or reference sibling tools like reload_config.

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. 32 tool updatesv0.1.0
    • First observedbackup_database
    • First observedcleanup_evidence_cache
    • First observedcompute_evaluation_metrics
    • First observedexport_evaluation_set
    • First observedget_compound
    • First observedget_config
    • First observedget_evaluation_status
    • First observedget_parse_job_status
    • First observedget_reaction_provenance
    • First observedget_reaction_step
    • First observedget_storage_usage
    • First observedget_vector_index_status
    • First observedhealth_check
    • First observedlist_parse_jobs
    • First observedmerge_compounds
    • First observedrebuild_vector_index
    • First observedrecognize_structure_image
    • First observedrecord_doi_verification
    • First observedregister_document
    • First observedreload_config
    • First observedreparse_document
    • First observedretry_failed_jobs
    • First observedretry_parse_job
    • First observedscan_inbox
    • First observedsearch_by_smiles
    • First observedsearch_compounds
    • First observedsearch_reaction_steps
    • First observedsemantic_search_reaction_steps
    • First observedtest_integration_endpoint
    • First observedupdate_config
    • First observedupload_document
    • First observedvalidate_config

TDQS

B3/5.0

Scored across 32 tools

Disambiguation5/5

Each tool has a specific, well-defined purpose. Document ingestion, compound/reaction searching, evaluation, and config/health tools are clearly separated without overlap. An agent can easily distinguish between e.g., search_compounds and search_by_smiles, or between list_parse_jobs and get_parse_job_status.

Naming Consistency5/5

All tool names follow a consistent snake_case verb_noun pattern (e.g., backup_database, get_compound, search_reaction_steps). There is no mixing of cases or inconsistent verb forms, making the naming predictable and clear.

Tool Count2/5

With 32 tools, the set is too large for typical MCP server coherence. While the domain is complex, many tools could be consolidated (e.g., multiple get_ and search_ tools). The count exceeds the 25+ threshold for 'too many' and may overwhelm agents.

Completeness4/5

The tool surface covers the full lifecycle: document ingestion, parsing, compound/reaction search, evaluation, config management, and maintenance. Minor gaps exist (e.g., no explicit delete for documents or compounds), but core workflows are well-supported and no dead ends are apparent.

Maintenance

ActivityStale
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    A
    quality
    D
    maintenance
    Local-first RAG indexing and semantic search MCP server. Enables document retrieval and context-aware queries using local embedding models.
    3
    6 npm
    MIT
  • A
    license
    Not graded
    quality
    C
    maintenance
    MCP server for Ketcher chemical structure editor integration, enabling SMILES/MOL/InChI conversion, image generation, molecular property calculation, and validation.
    MIT
  • A
    license
    A
    quality
    C
    maintenance
    MCP server that enables local hybrid semantic and keyword search over private PDF, DOCX, Markdown, and text documents without sending data to embedding APIs.
    9
    3,151 npm
    MIT