scifinder-route-mcp
The scifinder-route-mcp server indexes, searches, and manages reaction-step-level chemical synthesis routes extracted from SciFinder exports, with support for document ingestion, LLM-powered extraction, vector search, compound registry, and operational management.
Document Ingestion & Management
Register, upload, and scan inbox for SciFinder exports (PDF, HTML, MHTML, RTF, RDF, TXT, MD)
Reparse documents from scratch, clearing previously extracted reactions
Parse Job Management
Queue files for asynchronous extraction; track, list, retry individual or all failed jobs
Reaction Step Search & Retrieval
Search by text, reagents, solvents, document ID, or confidence threshold
Retrieve full step details and source provenance
Semantic similarity search via vector embeddings
Compound Registry
Search by name, CAS, SMILES, or InChIKey; view metadata and linked reactions
Merge duplicate compound records
Recognize chemical structures from images via external endpoints (MolScribe, DECIMER, OSRA)
Vector Index Management
Rebuild embeddings index and check coverage/status
DOI Verification & Evaluation
Record agent/browser DOI verification results
Export gold-set JSONL, compute regression metrics, and view latest evaluation status
Configuration Management
View, update, validate, and hot-reload configuration (async jobs, integrations, security) without container restarts
Operational & Maintenance
Health check, storage usage reporting, SQLite backup, evidence/cache cleanup (with dry-run), and integration endpoint testing (LLM, embedding, OCR, document parser, PostgreSQL)
Integrates with OpenAI-compatible APIs for LLM-based extraction of reaction steps and generating embeddings for semantic search, using configurable endpoints for chat completions and embeddings.
Allows use of PostgreSQL as the primary database backend with optional pgvector support for vector storage and similarity search, including connectivity status and fallback to SQLite.
Provides optional Redis as a queue backend for durable job processing, configurable via queue.redis_url as an alternative to the default SQLite queue.
Click on "Deploy Server".
Wait a few minutes for the server to deploy. Once ready, it will show a "Started" state.
In the chat, type
@followed by the MCP server name and your instructions, e.g., "@scifinder-route-mcpscan inbox for new SciFinder exports"
That's it! The server will respond to your query, and you can continue using it as needed.
Here is a step-by-step guide with screenshots.
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 forghcr.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 -dThen open:
Admin Web UI: http://<nas-host>:8001/
MCP HTTP: http://<nas-host>:8000/mcp
Legacy SSE: http://<nas-host>:8000/ssePut 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 --buildPersistent 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_closedUse 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=/sseIn 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=/mcpor:
SCIFINDER_ROUTE_TRANSPORT=sse
SCIFINDER_ROUTE_SSE_PATH=/sseAdmin 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 MCPSecret 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_batchFeature Matrix
Area | Status | Notes |
Docker/NAS adaptive MCP service | Implemented | Default |
Single-transport override | Implemented | Set |
GHCR multi-arch image workflow | Implemented |
|
Read-only inbox scanning | Implemented |
|
HTTP upload staging | Implemented |
|
Sidecar watcher | Implemented |
|
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 |
|
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 |
|
OCR worker | Implemented adapter |
|
Rule extraction | Implemented | Candidate blocks and structured fields. |
LLM JSON structuring | Implemented adapter | OpenAI-compatible |
Embedding/vector index | Implemented adapter | OpenAI-compatible |
Compound registry | Implemented | CAS/SMILES/InChIKey text extraction, alias registry, reaction roles; RDKit optional. |
Image structure recognition | Implemented adapter |
|
Multi-user authorization | Implemented |
|
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 ashttps://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_parsewithreturn_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: trueStructure 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: 2Run:
scifinder-route-sidecar sidecar.yamlThe 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-meMulti-user token mode:
SCIFINDER_ROUTE_USERS=alice:viewer-token:viewer,bob:operator-token:operator,root:admin-token:adminRoles:
viewer search/read/status
operator scan/reparse/retry/vector/evaluation/integration tests
admin config/backup/cleanup/secret operationsDevelopment
python -m pytest -qOptional Docker check:
docker compose build
docker compose -f docker-compose.image.yml configAvailable Tools
32 toolsbackup_databaseC
Create a SQLite database backup, or report Postgres backup guidance.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| dry_run | No | ||
| max_age_days | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| gold_set_path | Yes | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| output_path | No | ||
| limit | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| compound_id | Yes | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| include_secrets | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reaction_step_id | Yes | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reaction_step_id | Yes | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| status | No | ||
| limit | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| source_compound_id | Yes | ||
| target_compound_id | Yes | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| image_path | Yes | ||
| reaction_step_id | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reaction_step_id | Yes | ||
| doi | Yes | ||
| verified_fields | Yes | ||
| paper_title | No | ||
| original_paper_excerpt | No | ||
| verification_confidence | No | ||
| verifier_agent | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| file_path | Yes | ||
| reparse | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| document_id | Yes | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| limit | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| job_id | Yes | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?
With no annotations, the description carries the full burden. It discloses 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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| reparse | No | ||
| limit | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| smiles | Yes | ||
| limit | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| limit | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | No | ||
| reagent | No | ||
| solvent | No | ||
| document_id | No | ||
| min_confidence | No | ||
| limit | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| query | Yes | ||
| limit | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
| result | Yes |
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| kind | Yes | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| updates | Yes | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| source_path | Yes | ||
| filename | No | ||
| reparse | No | ||
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
| Name | Required | Description | Default |
|---|---|---|---|
| token | No |
Output Schema
| Name | Required | Description |
|---|---|---|
No output parameters | ||
TDQS
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.
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.
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.
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.
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.
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.
32 tool updates
v0.1.0- First observed
backup_database - First observed
cleanup_evidence_cache - First observed
compute_evaluation_metrics - First observed
export_evaluation_set - First observed
get_compound - First observed
get_config - First observed
get_evaluation_status - First observed
get_parse_job_status - First observed
get_reaction_provenance - First observed
get_reaction_step - First observed
get_storage_usage - First observed
get_vector_index_status - First observed
health_check - First observed
list_parse_jobs - First observed
merge_compounds - First observed
rebuild_vector_index - First observed
recognize_structure_image - First observed
record_doi_verification - First observed
register_document - First observed
reload_config - First observed
reparse_document - First observed
retry_failed_jobs - First observed
retry_parse_job - First observed
scan_inbox - First observed
search_by_smiles - First observed
search_compounds - First observed
search_reaction_steps - First observed
semantic_search_reaction_steps - First observed
test_integration_endpoint - First observed
update_config - First observed
upload_document - First observed
validate_config
TDQS
Scored across 32 tools
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.
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.
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.
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
Related MCP Connectors
Token-free MCP server for structured RevoGrid Core, Pro, and Enterprise knowledge retrieval.
Personal knowledge base MCP server with semantic search, auto-categorization, metadata extraction
MCP server for US nursing facility search and ownership lookup (NursingHomeDatabase).
Related MCP Servers
- AlicenseAqualityDmaintenanceLocal-first RAG indexing and semantic search MCP server. Enables document retrieval and context-aware queries using local embedding models.36 npmMIT
- AlicenseNot gradedqualityCmaintenanceMCP server for Ketcher chemical structure editor integration, enabling SMILES/MOL/InChI conversion, image generation, molecular property calculation, and validation.MIT
- AlicenseAqualityCmaintenanceMCP server for local knowledge management with Markdown and PDF indexing using SQLite FTS5.59 npm2MIT
- AlicenseAqualityCmaintenanceMCP server that enables local hybrid semantic and keyword search over private PDF, DOCX, Markdown, and text documents without sending data to embedding APIs.93,151 npmMIT