Skip to main content
Glama

EPA CompTox MCP Server CI DOI License Release Python

Part of ToxMCP Suite -> https://github.com/ToxMCP/toxmcp

Public MCP endpoint for EPA Computational Toxicology (CompTox) evidence federation. Expose chemical identity, hazard, exposure, bioactivity, metadata, screening-prioritization summaries, contract-manifest discovery, and cross-suite handoff builders to any MCP-aware agent (Codex CLI, Gemini CLI, Claude Code, etc.).

Maintainer: Ivo Djidrovski (@senseibelbi)

Contact: Use GitHub Issues for bugs, usage questions, and feature requests; use the in4r.ai contact form for private general inquiries; and report vulnerabilities through GitHub's private security advisory channel.

IMPORTANT

An EPA CompTox API key is required for live chemical data. Request a key using EPA's official instructions, or email ccte_api@epa.gov for API-key help. After cloning the repository, put the key in .env as CTX_API_KEY; never commit or share it.

Architecture

flowchart LR
  subgraph Clients["Clients and Agents"]
    Codex["Codex CLI / Desktop"]
    Gemini["Gemini CLI"]
    Claude["Claude Code"]
    Scripts["Scripts / notebooks"]
  end

  subgraph API["FastAPI MCP Service"]
    Router["HTTP + WebSocket entrypoints\n/healthz, /readyz, /mcp, /mcp/ws"]
    Registry["Tool registry\ninputSchema + outputSchema"]
    Tools["Tool handlers\nretrieval, validation, handoff"]
  end

  subgraph Evidence["Tier-0 Evidence and Federation Layer"]
    Chemical["Chemical identity"]
    Hazard["Hazard datasets"]
    Exposure["Exposure + HTTK"]
    Bioactivity["Bioactivity + AOP link-outs"]
    Metadata["Model cards + applicability"]
    Prioritization["Screening prioritization\nAED / exposure signals"]
    Manifest["Contract manifest\nresources / tools / schemas"]
    Interop["Portable evidence packs\nAOP / PBPK handoff builders"]
  end

  subgraph Contracts["Contract and Artifact Layer"]
    McpSchemas["MCP response schemas\n/docs/contracts/schemas"]
    Portable["Portable object schemas\n/schemas"]
    Tests["Catalog, schema, and handoff tests"]
  end

  subgraph Upstream["Upstream Sources"]
    CTX["EPA CTX APIs"]
    Bundles["Packaged metadata bundles"]
  end

  Clients --> Router
  Router --> Registry
  Registry --> Tools
  Tools --> Chemical
  Tools --> Hazard
  Tools --> Exposure
  Tools --> Bioactivity
  Tools --> Metadata
  Tools --> Prioritization
  Tools --> Manifest
  Tools --> Interop
  Chemical --> CTX
  Hazard --> CTX
  Exposure --> CTX
  Bioactivity --> CTX
  Metadata --> Bundles
  Tools --> McpSchemas
  Interop --> Portable
  McpSchemas --> Tests
  Portable --> Tests

The current implementation follows a layered model:

  • FastAPI + JSON-RPC expose /mcp and /mcp/ws, with /healthz and /readyz kept separate from domain logic.

  • Retrieval resources own CompTox-native evidence access for chemical, hazard, exposure, bioactivity, cheminformatics, and metadata.

  • Screening prioritization stays separate from interop builders and emits explicitly caveated AED/exposure prioritization summaries instead of final risk decisions.

  • Contract manifest publishes the live public catalog plus schema inventory in machine-readable form for downstream MCP consumers.

  • Interop tools package portable evidence objects for downstream MCP consumers without cloning AOP OECD semantics or PBPK execution semantics.

  • Contract layers are split intentionally: docs/contracts/schemas/ for MCP response wrappers, schemas/ for cross-suite portable evidence objects.

  • Regression gates keep README, live discovery, published schemas, and AOP/PBPK handoff fixtures aligned before release.

Related MCP server: TogoMCP

What's New In v0.3.0

This is an unreleased SDK2 migration candidate. The published v0.2.7 deployment continues to serve existing clients until a separately reviewed rollout.

  • Stable MCP Python SDK 2.2.0 serves protocol 2026-07-28 on the existing /mcp endpoint and adds comptox-mcp-stdio.

  • Existing HTTP initialization, method aliases, WebSocket sessions, tool names, schemas, provenance and evidence-federation behavior remain available. Python 3.10 remains supported.

  • Modern catalog policy extensions use namespaced _meta; standard tool hints stay in annotations. Modern discovery uses private cache hints; upstream scientific results retain their provenance.

  • SDK1/SDK2 installed-client checks compare chemical retrieval, identity resolution, evidence packs, AOP/PBPK handoffs, prioritization, provider errors, descriptors and legacy resource URI calls.

See v0.3.0 release cleanup and the SDK2 compatibility and hosting guide.

For earlier changes, see the CHANGELOG.md, GitHub releases, or the versioned notes in docs/releases/.

Published Schemas

The portable CompTox handoff objects are now published as machine-readable JSON Schemas under schemas/, with matching examples under schemas/examples/.

Published object family:

  • schemas/chemicalIdentityRecord.v1.json

  • schemas/hazardEvidenceSummary.v1.json

  • schemas/exposureEvidenceSummary.v1.json

  • schemas/bioactivityEvidenceSummary.v1.json

  • schemas/aopLinkageSummary.v1.json

  • schemas/pbpkContextBundle.v1.json

  • schemas/comptoxEvidencePack.v1.json

Design intent:

  • keep the stable core fields required and allow additive convenience fields

  • keep AOP OECD normalization outside CompTox MCP

  • keep PBPK execution, qualification, and internal exposure objects outside CompTox MCP

  • make the portable evidence layer consumable by downstream validators and orchestrators without scraping examples out of tests

See schemas/README.md, tests/test_portable_schemas.py, and tests/test_cross_suite_handoffs.py for the maintainer gates that keep published objects aligned with live payload generation.

Why this project exists

Regulatory and research teams rely on the CompTox API for high-quality chemical, exposure, and hazard data. Traditional workflows involve bespoke scripts or manual dashboard exports that are hard to share with AI copilots.

The EPA CompTox MCP server wraps those workflows in a secure, programmable interface:

  • One MCP surface (/mcp HTTP + /mcp/ws WebSocket) delivers discovery and execution across chemical, bioactivity, exposure, hazard, metadata, interop, and supporting utility catalogues.

  • Screening prioritization adds a separate, caveated signal-ranking path built from CompTox AED and exposure sources without claiming final NGRA decisions.

  • Contract manifest discovery exposes the live public resources, tools, and schema inventory so downstream MCPs do not need to scrape docs to integrate safely.

  • Evidence federation role – CompTox acts as the suite's source-grounded evidence ingress layer for downstream AOP, PBPK, O-QT, and orchestration workflows.

  • Guardrails + provenance – JSON Schema validation, metadata attachments, transport audit hooks, and signed release attestations improve downstream reproducibility.

  • Agent friendly – tested with Codex CLI, Gemini CLI, and Claude (see integration guide).

Experimental predictive and orchestrator components still exist in this repository, but they are not part of the default public MCP tool catalog exposed by the server today.


Feature snapshot

Capability

Description

🌐 Dual MCP Transports

JSON-RPC over HTTP (/mcp) and WebSocket (/mcp/ws) with identical tool catalogues.

🧬 CompTox Tooling

Chemical, bioactivity, exposure, hazard, metadata, and supporting utility helpers mapped to structured MCP tools.

🔗 Evidence Federation

Designed as the suite's Tier-0 evidence ingress layer, packaging source-grounded CompTox outputs for downstream consumers.

🛡️ Guardrail Enforcement

JSON Schema response validation, metadata attachments, audit hooks, and transport safety controls improve reproducibility.

⚙️ Configurable by Design

Pydantic settings with .env support for API keys, retries, auth bypass, transport tuning, and observability.

🤖 Agent Ready

Verified with Codex CLI, Gemini CLI, and Claude Code; includes quick-start config snippets.


Table of contents

  1. Architecture

  2. What's new

  3. Published schemas

  4. Get an EPA CompTox API key

  5. Quick start

  6. Release verification

  7. Configuration

  8. Tool catalog

  9. Running the server

  10. Integrating with coding agents

  11. Output artifacts

  12. Security checklist

  13. Current limitations

  14. Development notes

  15. Contributing

  16. Security policy

  17. Support

  18. Code of conduct

  19. Citation

  20. Roadmap

  21. License


Get an EPA CompTox API key (required)

The server can start without a key, but its live chemical tools cannot retrieve EPA data until one is configured.

  1. Request an API key from EPA. EPA provides individual keys free of charge.

  2. For help with the request, email ccte_api@epa.gov.

  3. After cloning this repository, copy .env.example to .env and replace your_ctx_api_key_here with your key:

    CTX_API_KEY="your_key_from_epa"

Keep .env private. The readiness check in the quick start confirms that the configured key can authenticate with EPA.

Quick start

# 1) Install
git clone https://github.com/ToxMCP/comptox-mcp.git
cd comptox-mcp
pip install -e .

# 2) Configure the API key requested above
cp .env.example .env
# Open .env and replace your_ctx_api_key_here with your key

# 3) Run
uvicorn epacomp_tox.transport.websocket:app --host 127.0.0.1 --port 8000

# 4) Verify authenticated EPA readiness, then list MCP tools
curl -s http://localhost:8000/readyz | jq .
curl -s http://localhost:8000/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | jq '.result.tools | length'

With the server running, MCP clients can connect to http://localhost:8000/mcp (HTTP) or ws://localhost:8000/mcp/ws (WebSocket).

Once the server is running:

  • HTTP MCP endpoint: http://localhost:8000/mcp

  • WebSocket MCP endpoint: ws://localhost:8000/mcp/ws

  • Health check: http://localhost:8000/healthz

  • Readiness check: http://localhost:8000/readyz

  • Architecture docs: docs/architecture_overview.md

  • Contract docs: docs/contracts/README.md

  • Release verification guide: docs/releases/release_artifact_verification.md

Verification (smoke test)

Once the server is running:

# health
curl -s http://localhost:8000/healthz | jq .

# list MCP tools
curl -s http://localhost:8000/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"tools/list","params":{}}' | jq '.result.tools | length'

# live Bisphenol A demo (also validates the configured API key)
curl -s http://localhost:8000/readyz | jq .
curl -s http://localhost:8000/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/call","params":{"name":"search_chemical","arguments":{"query":"Bisphenol A","search_type":"equals"}}}' \
  | jq -r '.result.content[0].text'
curl -s http://localhost:8000/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"resolve_chemical_identifier","arguments":{"identifier":"80-05-7"}}}' \
  | jq -r '.result.content[0].text'

# live interop smoke
python scripts/mcp_interop_smoke.py --endpoint http://localhost:8000/mcp --json

# release-oriented smoke
python scripts/release_smoke.py --endpoint http://localhost:8000/mcp --json

Release verification

For published GitHub releases, signed provenance/SBOM attestation verification is documented in docs/releases/release_artifact_verification.md.


Configuration

Settings are resolved via pydantic-settings with .env/.env.local support. Key environment variables:

Variable

Required

Default

Description

CTX_API_KEY

✅

–

CompTox API key used for all downstream requests. Fallbacks: EPA_COMPTOX_API_KEY, ctx_x_api_key.

CTX_API_BASE_URL

Optional

https://comptox.epa.gov/ctx-api

Base URL for CompTox API.

CTX_USE_LEGACY

Optional

0

Set to 1 to use the legacy https://api-ccte.epa.gov endpoint.

CTX_RETRY_ATTEMPTS

Optional

3

Number of retry attempts for transient errors.

CTX_RETRY_BASE

Optional

0.5

Base sleep (seconds) used in exponential backoff.

ENVIRONMENT

Optional

development

Controls defaults like permissive CORS.

LOG_LEVEL

Optional

INFO

Application log level.

BYPASS_AUTH

Optional

0

Set to 1 to disable auth (development only).

CORS_ALLOW_ORIGINS

Optional

–

Comma-separated origins for HTTP transport. Defaults to * in development.

EPACOMP_MCP_HEARTBEAT_TIMEOUT_SECONDS

Optional

120

Minimum heartbeat timeout negotiated with WebSocket clients.

EPACOMP_MCP_HANDSHAKE_TIMEOUT_SECONDS

Optional

30

Minimum handshake timeout negotiated with WebSocket clients.

EPACOMP_MCP_METRICS_ENABLED

Optional

1

Toggle /metrics endpoint exposure.

See docs/deployment.md for production hardening tips and expanded configuration.


Tool catalog

Category

Highlight tools

Notes

Chemical discovery

search_chemical, batch_search_chemical, resolve_chemical_identifier, get_chemical_details

Resolve identifiers deterministically, inspect ambiguous matches, and fetch structures/details with CTX retry/backoff baked in.

Bioactivity & AOP link-outs

search_bioactivity_terms, get_bioactivity_summary_by_dtxsid, get_bioactivity_aop

Surface ToxCast/Tox21 summaries, assay metadata, and AOP crosswalks from CompTox bioactivity APIs.

Exposure & hazard

search_cpdat, search_httk, search_hazard, get_hazard_toxval

Batch-normalized access to CTX exposure datasets plus granular hazard endpoints (ToxValDB, ToxRefDB, cancer, genetox, ADME/IVIVE, IRIS, PPRTV, HAWC).

Screening prioritization

prioritize_risk_signals

Build an explicitly caveated screening-priority summary from AED, SEEM, HTTK, MMDB, and CPDat signals without presenting it as a regulatory risk decision.

Contract manifest

get_contract_manifest

Publish a machine-readable inventory of the live public resources, tools, MCP response schemas, portable schemas, and boundary notes.

Metadata & governance

metadata_get_model_card, metadata_list_applicability_domain, metadata_get_applicability_domain

Fetch model cards, applicability-domain policies, and explicit guardrail metadata describing documented vs locally enforced criteria.

Interop handoff builders

assemble_comptox_evidence_pack, build_aop_linkage_summary, build_pbpk_context_bundle

Package portable evidence objects and downstream-ready handoff summaries for AOP and PBPK MCP consumers without duplicating their semantics.

Utility helpers

opsin_convert_name, indigo_convert_molfile

Provide supporting conversions for downstream automations.

The default server currently registers ten public resources: chemical, bioactivity, exposure, hazard, chemical list, cheminformatics, metadata, interop, prioritization, and manifest. Full schema definitions (input and output) are returned via the MCP tools/list call. See tests/test_resources.py for examples of exercising each category.

Experimental components

The repository also contains predictive and orchestrator code under src/epacomp_tox/predictive/ and src/epacomp_tox/orchestrator/. Treat those modules as experimental until they are registered in the default server, documented as part of the canonical tool catalog, and backed by stable public response contracts.


Running the server

Local development

# install and start the dual-transport server
pip install -e .
uvicorn epacomp_tox.transport.websocket:app --host 127.0.0.1 --port 8000

The FastAPI app exposes both transports:

  • HTTP JSON-RPC: http://localhost:8000/mcp

  • WebSocket JSON-RPC: ws://localhost:8000/mcp/ws

Quick handshake + tool discovery via HTTP:

curl -s http://localhost:8000/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":1,"method":"initialize","params":{"capabilities":{}}}'

curl -s http://localhost:8000/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":2,"method":"tools/list"}' | jq '.result.tools | length'

Hazard smoke test

Validate the hazard suite once transports are online:

# Bisphenol A toxval summary (expect a 40 mg/kg-day NOEL among the records)
curl -s http://localhost:8000/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":3,"method":"tools/call","params":{"name":"search_hazard","arguments":{"data_type":"toxval","dtxsid":"DTXSID7020182","summary":true}}}' | jq '.result.structuredContent.data[0]'

# Perfluorooctanoic acid cancer classification (expect CalEPA and IARC calls)
curl -s http://localhost:8000/mcp \
  -H 'Content-Type: application/json' \
  -d '{"jsonrpc":"2.0","id":4,"method":"tools/call","params":{"name":"search_hazard","arguments":{"data_type":"cancer","dtxsid":"DTXSID8031865","summary":true}}}' | jq '.result.structuredContent.data'

Bisphenol A should return HESS and HPVIS toxicity values (including the 40 mg/kg-day NOEL), while Perfluorooctanoic acid surfaces the ATSDR MRL alongside CalEPA and IARC cancer classifications. Errors typically indicate missing API credentials or upstream CompTox outages; inspect the returned metadata for rate-limit status when troubleshooting.

Endpoint smoke check

Before exposing the MCP server, run the endpoint checker to verify the upstream CompTox APIs are reachable:

python scripts/check_endpoints.py
# add --json for machine-readable output

The script pings each endpoint listed in docs/contracts/endpoint-matrix.md and reports latency plus HTTP status. Provide CTX_API_KEY/EPA_COMPTOX_API_KEY in the environment to avoid 401/403 responses.

Endpoint automation

A scheduled GitHub Action (.github/workflows/endpoint-check.yml) runs python scripts/check_endpoints.py --json every day at 06:00 UTC using the CTX_API_KEY secret. The workflow uploads endpoint_status.json as an artifact so operators can review upstream availability without rerunning the checker locally. Maintainers can also trigger the workflow for a specific pull request by applying the run-endpoint-check label (the job only executes for internal branches so secrets stay protected).

Production deployment

  • Run via Gunicorn: gunicorn epacomp_tox.transport.websocket:app -c deploy/gunicorn_conf.py

  • Container image: see deploy/Dockerfile for a hardened, non-root runtime.

  • Probes: /healthz (liveness) and /readyz (performs CTX connectivity check). Non-200 responses should trigger restarts.

  • Metrics: /metrics exposes Prometheus gauges derived from MCPServer.get_transport_metrics(). Sample scrape/OTEL configs live in deploy/prometheus_scrape.yaml and deploy/otel_collector_metrics.yaml.

  • Additional rollout guidance (TLS, ingress, scaling) lives in docs/deployment.md.


Integrating with coding agents

The repository includes step-by-step instructions in docs/integration_guides/mcp_integration.md. Highlights:

  • Codex CLI: add an HTTP provider pointing to http://localhost:8000/mcp with the Authorization: Bearer <token> header when auth is enabled.

  • Gemini CLI: configure the provider transport to http with the same endpoint and optional headers.

  • Claude Code / Cursor: update the MCP provider JSON to point to the HTTP endpoint; WebSocket is optional when streaming events are required.

Each guide covers tool listing, sample calls, binary payload handling, and troubleshooting tips (timeouts, auth failures, unexpected 4xx responses).


Output artifacts

Every successful tool invocation returns payloads designed for both agents and people:

  • content: human-readable text for chat surfaces; chemical search and resolution include an explicit source line.

  • structuredContent: machine-readable object results that exactly match the advertised output schema.

  • structuredContent.data: the standard envelope used when a tool's native result is an array or scalar.

  • _meta: runtime-only upstream, provenance, and session information that does not alter the scientific result schema.

  • Default registered tools are retrieval and federation oriented; experimental predictive/orchestrator modules in this repository are not part of the canonical public surface yet.

Tool annotations identify these public retrieval tools as read-only and idempotent. Approval persistence is controlled by the MCP client (for example Claude Desktop), not by the server.


Security checklist

  • Disable BYPASS_AUTH and front the MCP server with OAuth/OIDC once deployed beyond local development.

  • Restrict CORS_ALLOW_ORIGINS to approved hosts when exposing the HTTP transport.

  • Rotate CTX_API_KEY regularly and store secrets outside the repository (e.g. cloud secret manager or OS keychain).

  • Monitor /metrics for negotiated capability changes and unexpected spikes in tools/call failures.

  • Enable HTTPS/TLS at the ingress or reverse proxy layer.

  • Keep GitHub branch protection, dependency review, and CodeQL scanning enabled on the canonical repository.

  • Pin GitHub Actions workflows to immutable commit SHAs and update them intentionally during maintenance windows.

  • Generate and retain a CycloneDX SBOM for release artifacts so downstream consumers can audit package composition.

  • Publish signed provenance and SBOM attestations for release artifacts so consumers can verify what was built and released.

  • Follow coordinated vulnerability disclosure guidance in SECURITY.md.


Development notes

Architecture snapshot

┌────────────────┐       ┌────────────────────────────┐       ┌──────────────────────┐
│ MCP Client     │  MCP  │ FastAPI App                │  MCP  │ CompTox Resources    │
│ (CLI / IDE)    │──────▶│ HTTP (/mcp) & WS (/mcp/ws) │──────▶│ • chemical           │
└────────────────┘       │ • tool registry            │       │ • bioactivity        │
       │                 │ • JSON-RPC dispatch        │       │ • exposure / hazard  │
       ▼                 │ • response validation      │       │ • metadata / interop │
                         └────────────────────────────┘       │ • utility catalogs   │
                                                              └──────────────────────┘

Guardrails & governance

  • Applicability-domain definitions, policy defaults, and remediation steps live under metadata/ with JSON Schema validation.

  • Response contracts live under docs/contracts/schemas/ (see docs/contracts/README.md) and are enforced before MCP responses are returned; upstream failover policies are summarized in docs/contracts/endpoint-matrix.md.

  • Experimental predictive/orchestrator modules remain in-repo design and implementation assets; they are not part of the default public tool catalog until explicitly registered and documented.

Testing & quality gates

  • tests/test_mcp_conformance_suite.py covers handshake, catalog discovery, and streaming behaviours.

  • tests/test_tool_contracts.py enforces output schema declarations for the registered resources.

  • scripts/smoke_ctx.sh runs integration smoke tests against the live CTX API.

  • scripts/mcp_http_smoke.sh performs a quick JSON-RPC handshake and tool listing against the HTTP transport.

  • scripts/mcp_interop_smoke.py validates the public interop tool path end-to-end over the HTTP transport.

  • scripts/release_smoke.py exercises authenticated readiness, manifest discovery, deterministic identifier resolution, screening prioritization, interop builders, and WebSocket parity in one release-oriented pass.

  • .github/workflows/live-interop-smoke.yml runs the interop smoke path in GitHub Actions on demand or on a weekly schedule when CTX_API_KEY is configured.

  • Documentation builds (scripts/build_docs.sh) and CI workflows keep diagrams and links healthy.

  • Experimental predictive/orchestrator suites remain valuable internal regression coverage, but they should not be presented as canonical public-surface checks.


Roadmap


Current limitations

  • Predictive and orchestrator code still exists in-repo, but it is not part of the default public MCP tool catalog.

  • CompTox MCP publishes AOP linkage summaries, but OECD-style mechanistic normalization still belongs in aop-mcp.

  • CompTox MCP publishes PBPK context bundles, but PBPK execution, qualification, uncertainty synthesis, and internal exposure objects still belong in pbpk-mcp.

  • BER logic, stop/continue/refine policy, and final NGRA decisions remain out of scope for this server.

  • Live evidence retrieval still depends on upstream CTX availability and API credentials.

Contributing

See CONTRIBUTING.md for development workflow, coding standards, and PR expectations.

Security policy

See SECURITY.md for coordinated disclosure guidance and supported reporting channels.

Support

See SUPPORT.md for public support, bug-reporting, and non-security guidance.

Code of conduct

See CODE_OF_CONDUCT.md for collaboration expectations across the project and suite.

Citation

If you use this project in research or derived tooling, please cite:


License

This project is licensed under the Apache License 2.0. See LICENSE for details.

Acknowledgements

  • EPA's Center for Computational Toxicology and Exposure (CCTE)

  • The ctx-python project for the official CompTox Python bindings

  • The Model Context Protocol community for defining the automation surface we target

Available Tools

85 tools
assemble_comptox_evidence_packassemble_comptox_evidence_packC
Read-onlyIdempotent

Assemble a portable CompTox evidence pack combining identity, hazard, exposure, bioactivity, AOP linkage, and PBPK context slices.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidNoDSSTox substance identifier to package.
identifierNoOptional non-DTXSID identifier to resolve before packaging.
max_assaysNo
model_nameNoOptional model-card name filter when collecting PBPK context references.
include_aopNo
allow_fallbackNo
max_candidatesNo
hazard_datasetsNoHazard datasets to include in the portable hazard summary.
identifier_typeNoOptional identifier category when `identifier` is supplied.
include_exposureNo
include_bioactivityNo
include_pbpk_contextNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
auditYes
metadataYes
limitationsNo
mcpMetadataNo
knownDataGapsNo
chemicalIdentityYes
semanticCoverageYes
aopLinkageSummaryNo
pbpkContextBundleNo
provenanceSummaryNo
generatedFromToolsNo
identityResolutionNo
hazardEvidenceSummaryNo
exposureEvidenceSummaryNo
bioactivityEvidenceSummaryNo

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety/idempotency profile. The description adds that the output is a 'portable' pack, but omits meaningful behavioral context such as what allow_fallback (default false) actually does and what the pack contains beyond the domain list.

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

Conciseness4/5

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

A single front-loaded sentence with the verb first and zero filler. It is appropriately tight, though its brevity is arguably under-specification for a 12-parameter composite tool.

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

Completeness2/5

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

For a 12-parameter aggregation tool the description is thin: it does not explain fallback behavior, candidate/assay limits, or how the pack differs from the narrower sibling builders. An output schema and rich annotations reduce the burden somewhat, but the behavioral and usage gaps are substantial.

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

Parameters2/5

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

With 12 parameters at only 42% schema description coverage, the description must compensate. It only loosely names the include_* domains and says nothing about allow_fallback, max_assays, max_candidates, or the hazard_datasets enum, leaving most parameters undocumented in both schema and description.

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

Purpose4/5

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

States a specific verb ('Assemble') and resource ('CompTox evidence pack') and enumerates the six constituent domains (identity, hazard, exposure, bioactivity, AOP linkage, PBPK context). Clear purpose, but it gives no signal to distinguish it from sibling composite builders like build_aop_linkage_summary or build_pbpk_context_bundle.

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

Usage Guidelines2/5

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

The description only says what the tool produces; it offers no when-to-use guidance, no prerequisites, and no mention of alternatives such as the narrower build_* sibling tools or prioritize_risk_signals. The agent must infer when a full evidence pack is warranted.

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

batch_get_bioactivity_aedbatch_get_bioactivity_aedC
Read-onlyIdempotent

Batch retrieve AED data for multiple chemicals

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesDSSTox IDs to request (max 200 per batch)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already cover the read-only, idempotent, non-destructive, open-world behavior. The description adds no behavioral context beyond the name, such as rate limits or how the batch is processed, so it provides no value beyond the structured fields.

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

Conciseness4/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately concise for a simple batch tool, though its brevity means it omits useful routing information.

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

Completeness3/5

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

With annotations covering safety and an output schema covering return values, the description only needs to state purpose. It does so adequately, but fails to mention the sibling get_bioactivity_aed or when to prefer the batch version, leaving a gap for an agent selecting among many tools.

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

Parameters3/5

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

Schema description coverage is 100%, and the single dtxsids parameter is fully documented in the schema, including the max 200 per batch constraint. The description adds no additional meaning about the parameter, so the baseline of 3 is appropriate.

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

Purpose4/5

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

The description states a specific verb (batch retrieve) and resource (AED data) with a clear scope (multiple chemicals). It is clear but does not differentiate from the sibling get_bioactivity_aed, leaving the agent to infer the batch-vs-single distinction.

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

Usage Guidelines2/5

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

No when-to-use guidance or alternatives are provided. The phrase 'for multiple chemicals' merely restates the batch nature and does not tell the agent when this tool should be chosen over get_bioactivity_aed or batch_get_bioactivity_data.

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

batch_get_bioactivity_assay_annotationsbatch_get_bioactivity_assay_annotationsC
Read-onlyIdempotent

Batch retrieve assay annotations for AEIDs

ParametersJSON Schema
NameRequiredDescriptionDefault
aeidsYesList of assay endpoint IDs

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds nothing beyond that — no note on what an 'annotation' contains, whether missing AEIDs are tolerated, or any batch-size limits.

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

Conciseness4/5

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

A single short, front-loaded sentence with no wasted words. It is efficient, though its brevity is partly the cause of the missing usage and behavioral detail.

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

Completeness3/5

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

An output schema exists, so return-value explanation is not required. However, for a batch retrieval tool positioned among dozens of bioactivity siblings, the definition is minimally adequate: it identifies the input but leaves routing and result semantics largely unexplained.

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

Parameters3/5

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

Schema description coverage is 100% and there is a single required parameter, so the schema already documents 'aeids' as a list of assay endpoint IDs. The description's phrase 'for AEIDs' merely restates that without adding format or batch-size detail; baseline 3 applies.

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

Purpose4/5

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

States a specific verb (retrieve) and resource (assay annotations) with a clear batch scope and the key selector (AEIDs). It is clear what the tool does, but it does not differentiate itself from adjacent bioactivity tools such as get_bioactivity_assay or get_bioactivity_aed by explaining what 'annotations' actually covers.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool rather than the many sibling bioactivity retrieval tools, nor any prerequisite or exclusion guidance. The agent must infer the use case entirely from the name, despite a crowded sibling set.

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

batch_get_bioactivity_databatch_get_bioactivity_dataB
Read-onlyIdempotent

Batch fetch bioactivity data for multiple identifiers

ParametersJSON Schema
NameRequiredDescriptionDefault
identifiersYesIdentifiers to request (max 200 per batch)
identifier_typeYesIdentifier category

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.3/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds nothing behavioral beyond the noun 'batch' in its title – no mention of the 200-item cap, error/partial-failure behavior on a batch, or rate limits. With rich annotations the bar is lower, but the description contributes essentially no extra context.

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

Conciseness4/5

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

A single, front-loaded sentence with zero filler; the batching scope is stated immediately. It is arguably too terse to earn a 5, but nothing in it is wasted.

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

Completeness4/5

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

With an output schema present and 100% schema coverage, the description does not need to explain return values or parameter details. It supplies the batching scope, which is the key missing piece for the agent, though it could be stronger by routing to the singular sibling.

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

Parameters3/5

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

Schema description coverage is 100%, so both parameters (identifier_type enum and identifiers array with minItems/max 200) are fully documented in the schema. The description adds no syntax, format, or value guidance beyond what the schema already provides, making the baseline 3 appropriate.

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

Purpose4/5

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

The description states a specific verb (fetch), resource (bioactivity data) and scope (batch, multiple identifiers), which is enough to distinguish it from the singular sibling get_bioactivity_data. However, it never names that sibling explicitly, so the distinction relies on the agent inferring it from 'batch' vs. the sibling's singular name.

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

Usage Guidelines3/5

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

'for multiple identifiers' implies the selection condition (use this when you have more than one identifier), but there is no explicit when-to-use statement and no reference to get_bioactivity_data as the single-identifier alternative. Usage is inferred rather than stated.

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

batch_get_chemical_detailsbatch_get_chemical_detailsC
Read-onlyIdempotent

Get detailed information about multiple chemicals

ParametersJSON Schema
NameRequiredDescriptionDefault
subsetNoOptional subset selector for detailsdefault
id_typeYesType of identifier
identifiersYesList of chemical identifiers

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.8/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds nothing on top: no batch size limits, no behavior for unknown/invalid identifiers, and no partial-failure semantics.

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

Conciseness3/5

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

A single short sentence with zero waste, but it is under-specified rather than tight - there is room for one or two more sentences that would earn their place by covering batching and sibling routing.

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

Completeness2/5

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

An output schema exists so return values need not be explained, but for a batch mutation-free lookup with enum-driven parameters, the description omits batch limits, identifier-format expectations, and how it relates to the singular sibling tool. That leaves gaps an agent must guess at.

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

Parameters3/5

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

Schema description coverage is 100% and both enums (id_type, subset) are documented in the schema, so the baseline is 3. The description adds no format details for identifiers or explanation of what each subset returns.

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

Purpose4/5

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

States a clear verb+resource ('Get detailed information about ... chemicals') and the batch scope via 'multiple'. It is distinguishable from get_chemical_details by the plural/batch framing, but it never explicitly contrasts itself with that sibling or with batch_search_chemical.

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

Usage Guidelines2/5

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

No when-to-use guidance, no exclusions, and no mention of alternatives such as get_chemical_details for a single chemical or batch_search_chemical for discovery. The agent must infer that this is the bulk lookup path.

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

batch_get_exposure_functional_usebatch_get_exposure_functional_useC
Read-onlyIdempotent

Batch fetch reported functional use data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesList of DSSTox Substance Identifiers

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds nothing beyond that — no batch-size ceiling, no partial-failure behavior, no rate-limit or missing-ID handling.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, so nothing is wasted. It is arguably under-specified rather than over-long, which the conciseness dimension should not penalize heavily.

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

Completeness3/5

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

An output schema exists, so return values need not be described. For a batch tool, though, the absence of any guidance on list size, ordering, or handling of unknown IDs leaves a real gap that annotations do not fill.

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

Parameters3/5

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

With one parameter at 100% schema description coverage, the schema already documents dtxsids as a list of DSSTox Substance Identifiers. The description's 'batch' wording implies a plural input but adds no format, limit, or validation detail beyond the schema.

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

Purpose4/5

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

States a clear verb (batch fetch) and resource (reported functional use data), and the 'batch' qualifier distinguishes it from the singular sibling get_exposure_functional_use. However, it never names that sibling or explains the batch-vs-single distinction explicitly.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of the single-item alternative, and no indication of batch-size limits or prerequisites. The agent must infer that this is the multi-ID variant purely from the word 'batch'.

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

batch_get_exposure_httkbatch_get_exposure_httkC
Read-onlyIdempotent

Batch fetch HTTK data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesList of DSSTox Substance Identifiers

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered. The description adds nothing beyond that: no batch-size behavior, no partial-failure handling for bad DSSTox IDs, no rate-limit or ordering context.

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

Conciseness3/5

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

The four-word phrase is front-loaded and wastes nothing, but it is terse to the point of being under-specified rather than genuinely concise. There is no second sentence to earn its place because none exists.

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

Completeness3/5

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

Complexity is low (one array parameter) and an output schema exists, so return values need not be explained. Still, for a batch endpoint, the absence of any note on batch sizing or partial failures leaves a small but real gap.

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

Parameters3/5

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

There is a single parameter at 100% schema description coverage ('List of DSSTox Substance Identifiers'), so the schema fully documents it. The description adds no semantics such as maximum list length, ID format expectations, or behavior on unresolvable identifiers, so the baseline 3 applies.

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

Purpose3/5

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

States a verb (fetch), a scope modifier (batch) and a resource (HTTK data), which does implicitly distinguish it from the single-item sibling get_exposure_httk. However, 'HTTK data' is an unexplained acronym and the description never says what kind of data is returned, so the purpose is only vaguely conveyed.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of the singular sibling get_exposure_httk as the alternative for non-batch calls, and no preconditions or batch-size limits. An agent must infer the routing decision entirely from the 'batch' prefix in the name.

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

batch_get_exposure_list_presencebatch_get_exposure_list_presenceC
Read-onlyIdempotent

Batch fetch list presence data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesList of DSSTox Substance Identifiers

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so safety is covered. The description adds nothing beyond that – no note on partial-failure behavior across a batch, no rate limits, and no clarification of what 'presence' means for a substance.

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

Conciseness3/5

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

A single five-word phrase, front-loaded with the verb. It is efficient but so terse that it reads as under-specification rather than deliberate conciseness.

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

Completeness2/5

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

An output schema exists, so return values need not be described. However, for a batch tool the description never explains what 'list presence' denotes, gives no batch-size expectations, and does not route the agent away from the singular sibling – gaps that matter for correct invocation.

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

Parameters3/5

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

Only one parameter and schema description coverage is 100%, so the schema fully documents 'dtxsids' as a list of DSSTox Substance Identifiers. The description adds no extra meaning, making the baseline 3 appropriate.

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

Purpose3/5

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

States a specific verb and resource ('fetch list presence data') and the 'batch' prefix implies plural input, but it never explains what 'list presence' means or distinguishes itself from the sibling get_exposure_list_presence, which a reader would naturally confuse it with.

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

Usage Guidelines2/5

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

There is no when-to-use guidance at all. The singular sibling get_exposure_list_presence exists, yet the description never states that this variant is for multiple DTXSIDs or when to prefer one over the other.

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

batch_get_exposure_product_databatch_get_exposure_product_dataC
Read-onlyIdempotent

Batch fetch CPDat product data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesList of DSSTox Substance Identifiers

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds nothing on top of that: no batch size limits, no partial-failure behavior when some DTXSIDs are invalid, no latency or rate-limit context for a batch call.

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

Conciseness4/5

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

A single short phrase with no filler and the batch scope front-loaded. It is efficiently sized, though its brevity is partly under-specification rather than true density.

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

Completeness3/5

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

The tool is structurally simple (one required array parameter) and an output schema exists, so return values need not be described. Still, the description omits any notion of batch limits or failure handling, which is the main thing an agent needs before issuing a multi-ID call.

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

Parameters3/5

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

Only one parameter, and the schema documents it fully (100% coverage) as a list of DSSTox Substance Identifiers with minItems 1. The description adds no extra meaning about accepted ID formats or how many IDs are practical per call, so the baseline of 3 applies.

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

Purpose3/5

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

States a verb (fetch), a resource (CPDat product data) and a batch scope, which loosely separates it from the single-item sibling get_exposure_product_data. However, 'CPDat' is unexplained domain jargon and the description gives no sense of what the product data contains, so it is only marginally more informative than the tool name.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisite for resolving DTXSIDs first, and no named alternative. The 'batch' prefix weakly implies 'use this for many IDs', but nothing states when to prefer it over get_exposure_product_data or over the other batch_get_exposure_* tools.

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

batch_get_hazard_cancer_summarybatch_get_hazard_cancer_summaryB
Read-onlyIdempotent

Retrieve cancer hazard summary for multiple chemicals.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesChemical identifiers (DTXSIDs).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety and idempotency profile is fully covered structurally. The description adds nothing beyond that — no notes on batch-size limits, partial-failure behavior, or handling of unknown DTXSIDs, which is the kind of context a batch call needs.

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

Conciseness4/5

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

One short, front-loaded sentence with no filler; the scope qualifier is placed where it is read first. It is efficient, though its brevity is partly why other dimensions are thin.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations carry the safety profile. What remains unaddressed for a batch retrieval tool — result ordering, behavior with invalid or mixed identifiers — keeps it at minimum-viable rather than complete.

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

Parameters3/5

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

There is a single parameter with 100% schema description coverage, so the schema fully documents the DTXSIDs array. The description's 'multiple chemicals' only loosely corroborates the array shape and adds no format or limit detail, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Retrieve) and resource (cancer hazard summary) with the key scope qualifier 'for multiple chemicals', which implicitly separates it from the single-chemical sibling get_hazard_cancer_summary. It does not name that sibling explicitly, so it stops short of a 5.

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

Usage Guidelines3/5

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

The phrase 'for multiple chemicals' implies this is the batched path, but there is no explicit when-to-use guidance or named alternative (get_hazard_cancer_summary) telling the agent to pick the single-item variant for one chemical. Usage is inferable rather than stated.

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

batch_get_hazard_genetox_detailsbatch_get_hazard_genetox_detailsC
Read-onlyIdempotent

Retrieve genotoxicity detailed data for multiple chemicals.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesChemical identifiers (DTXSIDs).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is fully covered. The description adds nothing beyond that—no batch-size limits, partial-failure behavior, ordering, or rate-limit context—so it contributes no behavioral value of its own.

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

Conciseness4/5

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

A single short sentence with zero waste and the key scope word 'multiple' placed up front. It is efficiently sized, though it is so terse that it borders on under-specification rather than tight conciseness.

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

Completeness3/5

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

An output schema exists so return values need not be explained, and annotations cover the safety profile. Still, for a batch retrieval tool the description omits batch cardinality limits and how per-chemical failures are handled, leaving gaps an agent would want covered.

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

Parameters3/5

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

Schema coverage is 100% for the single dtxsids parameter, which is already documented as 'Chemical identifiers (DTXSIDs)' with a minItems constraint. The description's 'multiple chemicals' only restates the array nature and adds no format or syntax detail, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Retrieve') and resource ('genotoxicity detailed data') with the scope 'multiple chemicals', which distinguishes it from the singular get_hazard_genetox_details. However, it never names or contrasts with the singular or summary siblings, leaving the agent to infer the batch distinction from the name alone.

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

Usage Guidelines2/5

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

No when-to-use guidance is given: nothing says when to prefer this batch variant over get_hazard_genetox_details or batch_get_hazard_genetox_summary, nor any prerequisite or batching limit. The 'multiple chemicals' phrasing is only an implied usage hint.

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

batch_get_hazard_genetox_summarybatch_get_hazard_genetox_summaryC
Read-onlyIdempotent

Retrieve genotoxicity summary data for multiple chemicals.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesChemical identifiers (DTXSIDs).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, covering the safety profile. The description adds no further behavioral context (batch limits, partial-failure handling, pagination), so it earns little beyond the annotations.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler. It is efficient, though extremely terse given the batch behavior that could be clarified.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the single parameter is fully covered. Still, as a batch endpoint it omits practical constraints (max number of DTXSIDs, behavior on unknown IDs) that an agent would benefit from.

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

Parameters3/5

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

Schema description coverage is 100% and the single 'dtxsids' parameter is documented as 'Chemical identifiers (DTXSIDs)' with minItems 1. The description adds no syntax or format detail beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Retrieve'), resource ('genotoxicity summary data'), and scope ('for multiple chemicals'), which hints at batch semantics. However it does not name the singular sibling get_hazard_genetox_summary or the details variant, so differentiation relies on the 'batch' prefix alone.

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

Usage Guidelines2/5

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

No when-to-use guidance: it does not say to prefer this over get_hazard_genetox_summary when handling many DTXSIDs, nor whether there are batch-size limits or alternatives. The 'multiple chemicals' phrasing is the only implied usage signal.

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

batch_get_hazard_skin_eyebatch_get_hazard_skin_eyeA
Read-onlyIdempotent

Retrieve skin and eye hazard data for multiple chemicals.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesChemical identifiers (DTXSIDs).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

A3.8/5.0
Behavior3/5

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

Annotations already declare readOnly, idempotent, openWorld, and non-destructive behavior, so the safety profile is fully covered. The description adds only the batch/multiple-chemicals scope, but does not describe error handling for invalid or missing DTXSIDs or rate limits. Given the annotations, a 3 is appropriate.

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

Conciseness5/5

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

One sentence, front-loaded with verb and resource, with no redundant or filler text. Appropriate for a simple retrieval tool.

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

Completeness4/5

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

With an output schema, full parameter descriptions, rich annotations, and low complexity, the description is largely complete. It could mention the singular alternative more explicitly, but an agent has enough to select and invoke this batch endpoint.

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

Parameters3/5

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

Schema coverage is 100% and the single dtxsids parameter is documented as an array of chemical identifiers. The description adds no syntax or format detail beyond the schema, so baseline 3 applies.

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

Purpose5/5

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

States a specific verb ('Retrieve') and resource ('skin and eye hazard data') with batch scope ('multiple chemicals'). The 'batch_' prefix and plural scope distinguish it from the singular sibling get_hazard_skin_eye.

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

Usage Guidelines3/5

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

The description implies use for multiple chemicals at once, but does not explicitly state when to choose this over the singular sibling or any prerequisites. Usage is implied by the batch scope, not guided by alternatives or exclusions.

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

batch_get_hazard_toxrefbatch_get_hazard_toxrefB
Read-onlyIdempotent

Batch retrieve ToxRefDB data by DTXSID.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesChemical identifiers (DTXSIDs).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only the data source (ToxRefDB), and says nothing about batch size limits, partial-failure behavior, or ordering that would be genuinely useful for a batch call.

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

Conciseness4/5

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

A single tight sentence with no filler and the key scoping term ('Batch') front-loaded. It is efficient, though the brevity borders on under-specification for a batch operation.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and annotations cover the safety profile, leaving little an agent strictly needs. Still, for a batch endpoint the description omits any note on batching semantics or how it relates to get_hazard_toxref, so it is only minimally complete.

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

Parameters3/5

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

Schema description coverage is 100% and there is a single parameter, so the schema already documents dtxsids as an array of chemical identifiers. The description's 'by DTXSID' merely restates this with no added format or cardinality detail, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb (retrieve) and resource (ToxRefDB data) keyed by DTXSID, and the 'Batch' prefix distinguishes it in kind from the singular sibling get_hazard_toxref. However, it never explicitly names the sibling or states the batch-vs-single relationship, so an agent must infer the distinction from the name alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus get_hazard_toxref or the other hazard batch tools, and no stated preconditions or batch-size limits. The only implied usage is 'multiple DTXSIDs', which comes from the name rather than the description.

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

batch_get_hazard_toxvalbatch_get_hazard_toxvalC
Read-onlyIdempotent

Retrieve ToxValDB hazard data for multiple chemicals.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesChemical identifiers (DTXSIDs).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that: no note on batch size limits, partial-failure behavior when some DTXSIDs are unknown, or how results are keyed back to inputs.

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

Conciseness4/5

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

One short, front-loaded sentence with no filler. It is efficient, though there was room to add routing or batch behavior without bloat.

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

Completeness3/5

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

An output schema exists and annotations cover the safety profile, so the definition is not obligated to explain return values. Still, for a batch tool the absence of any guidance on input limits or result correspondence leaves a real gap.

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

Parameters3/5

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

Schema description coverage is 100% for the single dtxsids array parameter, so the schema already documents the input fully. The description's 'multiple chemicals' phrasing merely restates the array shape and adds no format or validation detail.

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

Purpose4/5

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

States a specific verb (Retrieve), resource (ToxValDB hazard data), and scope (multiple chemicals), which distinguishes it from the singular sibling get_hazard_toxval. It never names that sibling explicitly, but the batch scope is unambiguous.

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

Usage Guidelines2/5

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

There is no when-to-use guidance and no mention of the alternative get_hazard_toxval for single-chemical lookups. The agent must infer the batch-vs-single routing entirely from the name.

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

batch_get_seem_demographicbatch_get_seem_demographicB
Read-onlyIdempotent

Batch fetch SEEM demographic exposure predictions

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesList of DSSTox Substance Identifiers

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered without the description. The description adds only that these are "predictions" (as opposed to measured data), which is modest added value; it says nothing about batch size limits, throttling, or partial-failure behavior.

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

Conciseness4/5

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

A single tight sentence with zero filler, front-loaded with the operation type. It is efficient, though so terse that it leaves useful routing detail on the table.

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

Completeness3/5

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

The output schema means return values need no explanation, and the schema documents the sole parameter, so the core is covered. Gaps remain around how this differs from its single-input sibling and what practical limits apply when batching multiple DTXSIDs.

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

Parameters3/5

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

Schema coverage is 100% and the single dtxsids parameter is fully documented in the schema, so the baseline of 3 applies. The description adds no extra syntax, cardinality limits, or identifier-format detail beyond what the schema already provides.

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

Purpose4/5

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

The description states a concrete verb ("Batch fetch") and a specific resource ("SEEM demographic exposure predictions"), and the "Batch" prefix implies the multi-input variant of get_seem_demographic. However, it never explicitly distinguishes itself from the single-input sibling or from batch_get_seem_general, so the agent must infer the routing.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of when to prefer this over get_seem_demographic (single) or batch_get_seem_general, and no prerequisites stated. The batch semantics are only implied by the name prefix.

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

batch_get_seem_generalbatch_get_seem_generalB
Read-onlyIdempotent

Batch fetch SEEM general exposure predictions

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesList of DSSTox Substance Identifiers

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered structurally. The description adds nothing beyond that - no note on batch size limits, partial-failure behavior, or coverage of the predictions - so it contributes no behavioral value over the structured fields.

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

Conciseness4/5

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

A single front-loaded sentence with no filler; the batch qualifier comes first, which is the most important discriminator. It is terse to the point of being thin, but nothing is wasted.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations cover safety, leaving only the parameter. Still, for a batch endpoint there is no mention of how many identifiers can be submitted per call or what happens on partial success, which are the main practical unknowns.

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

Parameters3/5

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

Schema description coverage is 100%: the single dtxsids parameter is documented in the schema as a list of DSSTox Substance Identifiers. The description adds no format or semantics beyond that, so the baseline 3 for high-coverage schemas applies.

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

Purpose4/5

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

States a clear verb ('Batch fetch') and resource ('SEEM general exposure predictions'), so an agent immediately knows the operation. It does not name or contrast itself with the single-item sibling get_seem_general or with get_seem_demographic, so sibling differentiation is left implicit in the word 'Batch'.

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

Usage Guidelines3/5

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

The word 'Batch' implies the tool is for fetching many substances at once rather than one, which is the key selection signal against get_seem_general. However, there is no explicit statement of when to prefer this over the single-item call, nor any note about batch-size limits or alternatives.

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

batch_search_chemicalbatch_search_chemicalC
Read-onlyIdempotent

Batch search for chemicals using a list of identifiers

ParametersJSON Schema
NameRequiredDescriptionDefault
identifiersYesIdentifiers to search (DTXSIDs, CASRNs, names, etc.)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesA list of chemicals matching the search criteria.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, openWorldHint=true, idempotentHint=true and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond that: no note on batch size limits, partial-failure behavior for unknown identifiers, or rate limits.

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

Conciseness4/5

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

A single short sentence with no wasted words and the key qualifier ('Batch') front-loaded. It is efficient, though it borders on under-specification rather than true conciseness.

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

Completeness3/5

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

Because an output schema exists, return values need not be explained, and the annotations carry the safety profile. Still, for a batch tool nothing is said about identifier limits, mixed-type lists, or unmatched-identifier handling, leaving meaningful gaps for correct invocation.

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

Parameters3/5

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

Only one parameter exists and schema coverage is 100%, with the schema itself listing accepted identifier forms (DTXSIDs, CASRNs, names, etc.). The description merely restates 'list of identifiers' and adds no syntax, limit, or format detail, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb and resource (batch search, chemicals) plus the input mechanism (a list of identifiers), so the agent knows exactly what the tool does. However, it never distinguishes itself from the sibling search_chemical, which does a single-identifier lookup; the distinction must be inferred from the word 'batch'.

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

Usage Guidelines2/5

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

There is no explicit when-to-use or when-not-to-use guidance, and no sibling is named as an alternative. At best the word 'Batch' implies 'use this for multiple identifiers', which is a weak inference rather than stated guidance.

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

batch_search_hazardbatch_search_hazardC
Read-onlyIdempotent

Batch hazard lookup for multiple DTXSIDs for the selected dataset.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesList of chemical identifiers (DTXSIDs).
summaryNoWhether to request summary (vs. detailed) data when supported.
data_typeYesHazard dataset to query.

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.9/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered. The description only adds the batch/multi-DTXSID nature, which is already implied by the name, and says nothing about response size, limits, or how batching behaves. Marginal value beyond structured fields.

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

Conciseness4/5

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

A single efficient sentence that is front-loaded with the key verb and scope. No filler, though it is arguably under-specified rather than genuinely concise.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations carry the safety profile. Still, the routing ambiguity against search_hazard and the per-dataset batch_get_hazard_* tools leaves the agent without enough to call this correctly versus alternatives.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents dtxsids, summary, and data_type with an enum. The description mentions 'multiple DTXSIDs' and 'selected dataset' but adds no syntax, format, or enum-value meaning beyond what the schema supplies. Baseline 3 is appropriate.

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

Purpose3/5

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

States a clear verb (batch lookup), resource (hazard), and scope (multiple DTXSIDs, selected dataset). However, it fails to distinguish itself from closely related siblings such as search_hazard (single lookup) and the per-dataset batch_get_hazard_toxval/skin_eye/cancer/genetox/toxref tools. An agent cannot tell from the description alone whether this tool subsumes those or is a separate generic path.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative routing is provided. 'For the selected dataset' implies the data_type parameter drives selection but gives no guidance on choosing between this generic batch tool and the more specific batch_get_hazard_* siblings.

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

build_aop_linkage_summarybuild_aop_linkage_summaryC
Read-onlyIdempotent

Build a CompTox-side AOP linkage summary from bioactivity assay and AOP crosswalk data.

ParametersJSON Schema
NameRequiredDescriptionDefault
aeidsNoOptional assay endpoint identifiers to prioritize for AOP mapping.
dtxsidNoDSSTox substance identifier to summarize.
identifierNoOptional non-DTXSID identifier to resolve before building the summary.
max_assaysNo
allow_fallbackNo
max_candidatesNo
identifier_typeNoOptional identifier category when `identifier` is supplied.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
mappingsYes
metadataNo
confidenceYes
lookupModeYes
provenanceYes
chemicalRefYes
limitationsNo
knownDataGapsNo
supportingAssaysYes
provenanceSummaryNo
generatedFromToolsNo
identityResolutionNo

TDQS

C2.4/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, and open-world behavior, so the safety profile is covered. The description adds nothing beyond that: it does not explain the fallback path implied by allow_fallback, what happens when an identifier fails to resolve, or any cost/rate characteristics of this composite build operation.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, which is efficient. It is under-specified rather than bloated, but as written every word earns its place.

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

Completeness2/5

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

Although an output schema exists (so return values needn't be described), this is a 7-parameter composite tool with a 57% schema coverage gap and no usage guidance. The description does not provide enough context for an agent to invoke it correctly or distinguish it from sibling AOP/bioactivity tools.

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

Parameters2/5

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

Schema description coverage is only 57%, and several parameters (max_assays, max_candidates, allow_fallback) have no schema descriptions at all. The description provides no parameter-level meaning to compensate, so the agent is left guessing what allow_fallback or the max_* limits actually control.

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

Purpose3/5

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

States a specific verb ('Build') and resource ('AOP linkage summary') with the source data named (bioactivity assay and AOP crosswalk data). However, it offers no differentiation from closely-named siblings such as get_bioactivity_aop or get_bioactivity_summary_by_dtxsid, and 'CompTox-side' is unexplained jargon, so an agent cannot confidently pick it over those alternatives.

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

Usage Guidelines2/5

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

The description contains no when-to-use, when-not-to-use, or prerequisite guidance. It does not mention the dtxsid-vs-identifier choice, when to prefer this over the sibling AOP/bioactivity summary tools, or what conditions make the summary useful.

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

build_pbpk_context_bundlebuild_pbpk_context_bundleB
Read-onlyIdempotent

Build a CompTox-side PBPK context bundle from HTTK, ADME/IVIVE, exposure hints, and model-card references.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidNoDSSTox substance identifier to summarize.
identifierNoOptional non-DTXSID identifier to resolve before building the bundle.
model_nameNoOptional model-card name filter.
allow_fallbackNo
max_candidatesNo
identifier_typeNoOptional identifier category when `identifier` is supplied.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataNo
metadataNo
httkSliceYes
provenanceYes
limitationsNo
exposureHintsYes
handoffTargetYes
knownDataGapsNo
modelCardRefsYes
provenanceSummaryNo
generatedFromToolsNo
identityResolutionNo
chemicalIdentityRefYes
hazardAdmeIviveSliceYes

TDQS

B3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description usefully names the aggregation sources, but says nothing about the meaning of allow_fallback (does it degrade the bundle?), latency, or what 'context bundle' contains.

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

Conciseness4/5

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

One front-loaded sentence that wastes no words and puts the resource and sources up front. It is efficient, though it reads as a flat list rather than prioritizing the key constraint.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the annotations cover safety. However, for a 6-parameter aggregation tool with a fallback switch and moderate schema coverage, missing when-to-use and fallback semantics leave real gaps.

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

Parameters2/5

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

Schema coverage is only 67%, and the two undocumented parameters (allow_fallback, max_candidates) are not explained in the description either. 'model-card references' loosely hints at model_name, but the fallback and candidate-limit semantics that govern behavior are left entirely opaque.

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

Purpose4/5

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

States a specific verb ('Build') and resource ('CompTox-side PBPK context bundle') and enumerates the source domains (HTTK, ADME/IVIVE, exposure, model cards). It is clear what the tool produces, but it does not distinguish itself from the similar-sounding sibling assemble_comptox_evidence_pack.

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

Usage Guidelines2/5

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

No guidance on when to use this aggregation tool rather than the adjacent assemble_comptox_evidence_pack, nor on prerequisites (resolvable identifier, DTXSID requirement). The agent must infer the context entirely from the name.

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

get_bioactivity_aedget_bioactivity_aedC
Read-onlyIdempotent

Retrieve Activity Exposure Distribution (AED) data for a chemical

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety and idempotency profile is fully covered. The description adds no behavioral context beyond the name — no note on scope, pagination, data provenance, or what the AED dataset contains, so it contributes essentially nothing on top of structured fields.

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

Conciseness4/5

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

One short, front-loaded sentence with no filler or redundancy. It is efficient, though its brevity borders on under-specification rather than tight conciseness.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and a single-param read tool carries a light burden. Still, with ~100 sibling tools and several bioactivity variants, the description lacks the routing context an agent needs to pick this one correctly.

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

Parameters3/5

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

Schema description coverage is 100% ('DSSTox Substance Identifier'), so the schema fully documents the single required parameter. The description adds no syntax or format guidance beyond that, which is the expected baseline when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb ('Retrieve') and resource ('Activity Exposure Distribution (AED) data') with the target entity ('for a chemical'), and even expands the acronym. However, it does nothing to distinguish itself from close siblings like get_bioactivity_data or batch_get_bioactivity_aed, leaving the agent to guess which retrieval route to take.

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

Usage Guidelines2/5

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

There is no statement of when to use this tool versus alternatives, no prerequisites beyond the implied dtxsid, and no indication of when-not to use it. In a sibling set with get_bioactivity_data, get_bioactivity_summary_by_dtxsid, and batch_get_bioactivity_aed, this omission forces inference.

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

get_bioactivity_analytical_qcget_bioactivity_analytical_qcB
Read-onlyIdempotent

Retrieve analytical QC data for a chemical

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already disclose readOnly, idempotent, openWorld, and non-destructive behavior. The description adds no further behavioral context such as what QC data includes, whether results are paginated, or any limits, so it does not enrich the structured safety profile.

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

Conciseness5/5

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

A single, front-loaded sentence with no wasted words. The purpose is delivered immediately and nothing extraneous is included.

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

Completeness3/5

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

With one fully documented parameter, rich annotations, and an output schema, the description only needs to identify the resource, which it does minimally. However, in a crowded sibling space, it omits any differentiation or selection context that would make invocation unambiguous.

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

Parameters3/5

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

Schema description coverage is 100% for the single dtxsid parameter, so the schema already defines it as the DSSTox Substance Identifier. The description adds no syntax, format, or usage detail beyond what the schema provides, making the baseline 3 appropriate.

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

Purpose4/5

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

States a clear verb ('Retrieve') and a specific resource ('analytical QC data') scoped to a chemical. It does not differentiate from siblings such as get_bioactivity_summary_by_dtxsid or get_bioactivity_data, but the resource is distinctive enough to be actionable.

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

Usage Guidelines2/5

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

Gives no guidance on when to use this tool versus the many sibling bioactivity and chemical-detail tools. There are no exclusion conditions, prerequisites, or alternative recommendations.

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

get_bioactivity_aopget_bioactivity_aopC
Read-onlyIdempotent

Retrieve adverse outcome pathway mappings

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesIdentifier value matching the lookup type
lookup_typeYesAOP lookup type

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesAdverse outcome pathway mapping records returned from CompTox bioactivity crosswalk queries.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing beyond that – no note on lookup semantics, external dependency, or what the mapping entails.

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

Conciseness4/5

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

A single short sentence with no filler, appropriately front-loaded. Its problem is under-specification, not verbosity.

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

Completeness2/5

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

An output schema exists so return values needn't be explained, but for a tool with a required enum-driven lookup the description leaves usage, lookup semantics, and sibling boundaries entirely unspecified. Incomplete for correct invocation.

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

Parameters3/5

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

Schema description coverage is 100% with both parameters documented and lookup_type carrying an enum, so the schema does the heavy lifting. The description adds no interpretation of identifier or lookup_type, so the baseline 3 is appropriate.

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

Purpose3/5

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

States a verb ('Retrieve') and resource ('adverse outcome pathway mappings'), so the basic purpose is legible. However, it offers no differentiation from sibling tools like build_aop_linkage_summary, which also concerns AOP data, leaving the agent to guess at the boundary.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives despite the presence of build_aop_linkage_summary and various AOP-related siblings. The identifier/lookup_type requirement that drives applicability is never surfaced in prose.

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

get_bioactivity_assayget_bioactivity_assayB
Read-onlyIdempotent

Retrieve assay annotations or lists (by AEID, gene, single-concentration, or all)

ParametersJSON Schema
NameRequiredDescriptionDefault
aeidNoAssay endpoint ID (required for aeid and single-concentration modes)
modeYesAssay query type
gene_symbolNoGene symbol (required for gene mode)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesAssay annotation payload returned for all-assay, single AEID, single-concentration, or gene-scoped bioactivity assay queries.

TDQS

B3.4/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false. The description adds no additional behavioral context such as rate limits, authentication requirements, or response behavior beyond what the annotations and schema already convey.

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

Conciseness5/5

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

A single front-loaded sentence with no wasted words. It immediately states the action, the resource, and the available query dimensions.

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

Completeness4/5

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

With an output schema and rich annotations already present, the description only needs to cover purpose and invocation context. It does so adequately by naming the retrieval targets and modes, though it could better distinguish this tool from its batch and list-oriented siblings.

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

Parameters3/5

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

Schema description coverage is 100%, so the schema already documents aeid, mode, and gene_symbol. The description names the same modes but adds no extra syntax, format, or constraint information beyond the schema.

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

Purpose4/5

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

States a specific verb ('Retrieve') and resource ('assay annotations or lists'), and lists the query modes. It does not explicitly distinguish itself from close siblings such as batch_get_bioactivity_assay_annotations or get_bioactivity_assay_chemicals, but the purpose is clear enough to select the tool.

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

Usage Guidelines3/5

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

The modes ('by AEID, gene, single-concentration, or all') imply when each query path applies, but the description never states when to use this tool versus the batch annotation, count, or chemical-list siblings. Usage is implied rather than guided.

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

get_bioactivity_assay_chemicalsget_bioactivity_assay_chemicalsC
Read-onlyIdempotent

Get chemicals associated with an assay endpoint

ParametersJSON Schema
NameRequiredDescriptionDefault
aeidYesAssay endpoint ID

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond those annotations—no pagination, return shape, or scope details—so it contributes little on this dimension.

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

Conciseness4/5

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

The description is a single efficient sentence with the resource front-loaded after the verb. It is appropriately sized for a simple lookup tool, though it omits any differentiating or usage context that could make it more informative.

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

Completeness3/5

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

For a low-complexity, single-parameter lookup with an output schema and full annotation coverage, the description is minimally adequate. It does not need to explain return values, but it still lacks usage guidance and sibling differentiation, leaving a clear gap for an agent navigating many similar bioactivity tools.

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

Parameters3/5

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

There is one required parameter (aeid) and schema description coverage is 100%, so the schema already fully documents it. The description says the input is an assay endpoint, which corroborates the schema but adds no syntax or format detail beyond it, matching the baseline of 3 when the schema does the heavy lifting.

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

Purpose4/5

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

The description states a clear verb (get) and resource (chemicals associated with an assay endpoint), so an agent can tell what the tool returns. However, it does not distinguish itself from close siblings such as get_bioactivity_summary_by_aeid or get_bioactivity_data, which also operate on assay endpoints, so sibling differentiation is missing.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives, nor any prerequisite or exclusion. The description only restates the purpose, leaving the agent to infer usage context from the name alone.

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

get_bioactivity_assay_countget_bioactivity_assay_countA
Read-onlyIdempotent

Return the total count of available assays

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

A3.5/5.0
Behavior2/5

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

The annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, fully covering the safety profile. The description adds no behavioral context beyond the return value, such as how 'available' is scoped or any rate/permission behavior.

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

Conciseness5/5

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

The description is a single front-loaded sentence with no filler. Every word contributes to stating the tool's output.

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

Completeness4/5

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

For a simple count tool with no parameters, rich annotations, and an output schema, the description is nearly complete. It could briefly clarify what 'available assays' means or when to prefer this over sibling detail tools, but the output schema covers return details.

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

Parameters4/5

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

There are zero parameters, so the baseline is 4. The description does not need to compensate for any parameter documentation gaps.

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

Purpose4/5

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

The description states a specific verb ('Return') and resource ('total count of available assays'), making the purpose clear. It does not, however, differentiate this count tool from sibling detail- or batch-oriented assay tools.

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

Usage Guidelines3/5

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

Usage is implied: the tool returns only a count, so an agent needing a lightweight total would choose it over detail-returning siblings like get_bioactivity_assay. But no explicit when-to-use or when-not-to-use guidance is provided.

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

get_bioactivity_dataget_bioactivity_dataB
Read-onlyIdempotent

Retrieve detailed bioactivity data for a single identifier

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesIdentifier value
projectionNoOptional projection (e.g., toxcast-summary-plot)
identifier_typeYesIdentifier category

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered. The description adds only that results are 'detailed' and scoped to one identifier, offering little beyond the structured fields about projection behavior or result breadth.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler; it is appropriately sized. It could carry a little more routing information without bloat, so it is efficient but thin rather than exemplary.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the annotations cover safety. However, with this many closely named bioactivity siblings, the description is too sparse to fully route an agent correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so identifier, identifier_type (with its enum), and projection are already documented in the schema. The description adds no format hints, valid-ID guidance, or projection semantics, so baseline 3 is appropriate.

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

Purpose4/5

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

It states a specific verb+resource ('Retrieve detailed bioactivity data') and narrows the scope with 'for a single identifier', which implicitly separates it from the batch_get_bioactivity_data sibling. It does not, however, distinguish it from the many summary/aed/assay bioactivity siblings that also operate on single identifiers.

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

Usage Guidelines2/5

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

The description gives no when-to-use guidance, no conditions for selecting it over get_bioactivity_summary_by_dtxsid, get_bioactivity_aed, or the batch variant. The only implicit cue is the word 'single' in an environment dense with alternatives.

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

get_bioactivity_summary_by_aeidget_bioactivity_summary_by_aeidC
Read-onlyIdempotent

Fetch bioactivity summary data for an assay endpoint ID (AEID)

ParametersJSON Schema
NameRequiredDescriptionDefault
aeidYesAssay endpoint identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered structurally. The description adds no behavioral context of its own — no mention of result size, pagination, or what 'summary' aggregates — so it contributes nothing beyond the annotations.

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

Conciseness4/5

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

A single front-loaded sentence with no wasted words. It is efficient, though its brevity also reflects the thin content rather than a tightly packed, information-dense definition.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile. However, for a tool surrounded by same-family siblings (by_dtxsid, by_tissue), the description does not supply the disambiguation an agent needs to select it confidently.

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

Parameters3/5

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

Schema coverage is 100% and the single aeid parameter is fully documented as 'Assay endpoint identifier'. The description only restates that as '(AEID)', adding no format, source, or lookup guidance beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Fetch) and resource (bioactivity summary data) scoped to an assay endpoint ID. The AEID keying distinguishes it from get_bioactivity_summary_by_dtxsid and get_bioactivity_summary_by_tissue, though it never explicitly names those siblings or contrasts itself with them.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative is stated. The agent must infer from the name alone that this is the right choice when it holds an AEID rather than a DTXSID or tissue, and nothing in the description guides that decision against the near-identical sibling tools.

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

get_bioactivity_summary_by_dtxsidget_bioactivity_summary_by_dtxsidC
Read-onlyIdempotent

Fetch bioactivity summary data for a chemical

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesBioactivity summary records for a chemical queried by DTXSID.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is fully covered. The description adds nothing beyond that — it does not say what the summary aggregates, whether the DTXSID must be pre-resolved, or how missing data behaves. With annotations doing the heavy lifting, this earns a low score for adding no new 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.

Conciseness4/5

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

A single short sentence with no filler and the resource front-loaded after the verb. It is efficiently sized, though its brevity reflects under-specification rather than tight editing of rich content.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and annotations cover the safety profile. The remaining gap is disambiguation from the by_aeid and by_tissue siblings, which the description does not address and which is the primary decision an agent faces here.

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

Parameters3/5

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

There is one parameter with 100% schema description coverage, so the schema already documents the DTXSID input; per the rubric this sets a baseline of 3. The description's phrase 'for a chemical' adds only marginal meaning beyond the schema and name.

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

Purpose3/5

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

States a specific verb (fetch) and resource (bioactivity summary data) and hints at the chemical-keyed scope. However, it never distinguishes itself from the two near-identical siblings get_bioactivity_summary_by_aeid and get_bioactivity_summary_by_tissue, so the agent must infer the keying from the tool name alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no statement of prerequisites, and no mention of the alternative summary tools keyed by assay endpoint or tissue. An agent choosing among three sibling summary tools gets no routing help from the description.

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

get_bioactivity_summary_by_tissueget_bioactivity_summary_by_tissueC
Read-onlyIdempotent

Fetch bioactivity summary data for a chemical in a specific tissue

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier
tissueYesTissue of origin (e.g., liver)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is fully covered structurally. The description adds nothing beyond that – no auth requirements, rate limits, or data-scope caveats – so it contributes little behavioral context on top of the annotations.

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

Conciseness4/5

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

A single front-loaded sentence with no filler, appropriately sized for a simple two-parameter read tool. It could arguably carry one more clause of routing guidance without becoming bloated.

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

Completeness3/5

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

For a simple read tool with rich annotations and an output schema, the description is minimally sufficient. However, given the dense cluster of near-identical bioactivity summary siblings, it lacks the routing information an agent needs to select correctly.

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

Parameters3/5

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

Schema description coverage is 100%, so both dtxsid and tissue are already documented in the schema (including the liver example). The description restates the two dimensions but adds no format, identifier syntax, or validity details beyond the schema, making the baseline 3 correct.

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

Purpose4/5

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

States a specific verb (Fetch) and resource (bioactivity summary data) with the scoping dimension (chemical + tissue). This distinguishes it from sibling summary tools like get_bioactivity_summary_by_dtxsid and get_bioactivity_summary_by_aeid via the tissue grouping, though it never names those alternatives explicitly.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of when to prefer this over the closely-related get_bioactivity_summary_by_dtxsid or get_bioactivity_data siblings. The agent must infer the routing from the name alone.

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

get_chemical_detailsget_chemical_detailsC
Read-onlyIdempotent

Get detailed information about a chemical

ParametersJSON Schema
NameRequiredDescriptionDefault
subsetNoOptional subset selector for detailsdefault
id_typeYesType of identifier
identifierYesChemical identifier (DTXSID or DTXCID)

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, covering the safety profile. The description adds nothing beyond them - no note on the 6-way subset selector, no indication of what the returned payload contains or how large it may be.

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

Conciseness3/5

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

A single short sentence with no wasted words, but its brevity comes from under-specification rather than disciplined editing. Nothing is front-loaded because there is nothing of substance to front-load.

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

Completeness2/5

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

An output schema exists so return values need not be explained, but the description leaves key agent decisions unanswered: which of the six subset values to request and how this differs from the batch and extra-data siblings. For a lookup tool with a required identifier pair and a rich enum, this is under-described.

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

Parameters3/5

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

Schema description coverage is 100%, so the identifier, id_type enum, and subset enum are already documented in the schema. The description contributes no additional parameter meaning, so the baseline of 3 applies.

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

Purpose2/5

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

The description 'Get detailed information about a chemical' is essentially a restatement of the tool name and title, adding no distinguishing scope. It does not separate this tool from siblings such as batch_get_chemical_details, get_chemical_extra_data, get_chemical_fate_details, or get_chemical_details' own single-vs-batch variant.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives. An agent cannot tell from the description when this should be preferred over search_chemical, resolve_chemical_identifier, or the batch sibling.

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

get_chemical_extra_dataget_chemical_extra_dataC
Read-onlyIdempotent

Fetch extra chemical data (functional use, use cases, etc.)

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidsYesList of DSSTox Substance Identifiers

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior3/5

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

The annotations already declare read-only, idempotent, non-destructive, and open-world behavior, so the description's main additional value is naming the data categories returned (functional use, use cases). It does not add auth, rate-limit, or other behavioral context, nor does it contradict the annotations.

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

Conciseness4/5

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

A single front-loaded sentence with no wasted words. It is efficient, though its terseness contributes to the vagueness captured in other dimensions.

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

Completeness3/5

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

Given the simple one-parameter shape, rich annotations, and presence of an output schema, the description is minimally adequate. However, the ambiguity of 'extra' and absence of any sibling differentiation leave a meaningful gap for correct tool selection.

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

Parameters3/5

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

Schema description coverage is 100%, so the single parameter (dtxsids) is already documented in the schema. The description adds no additional meaning about the parameter format or usage, which is the baseline expectation when the schema does the heavy lifting.

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

Purpose3/5

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

States a clear verb (Fetch) and resource (extra chemical data) with example data types, but 'extra' is vague and the description does not distinguish it from closely related siblings like get_exposure_functional_use or get_chemical_details. An agent can identify it as a read fetch but not precisely what scope it covers.

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

Usage Guidelines2/5

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

Provides no when-to-use guidance, no conditions for selecting this tool over alternatives, and no mention of prerequisites. The many sibling tools that also retrieve chemical or exposure data make the lack of routing guidance a notable gap.

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

get_chemical_fate_detailsget_chemical_fate_detailsB
Read-onlyIdempotent

Retrieve detailed environmental fate data for a chemical

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior2/5

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

The annotations already establish that this is read-only, idempotent, open-world, and non-destructive. The description adds no behavioral context beyond that, such as scope, output characteristics, or authentication needs.

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

Conciseness5/5

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

It is a single, front-loaded sentence with no wasted words. The purpose is stated immediately.

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

Completeness4/5

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

The tool is a simple retrieval operation with one well-documented parameter, rich annotations, and an output schema, so the description does not need to explain return values. It is mostly sufficient, though it leaves the relationship to the summary sibling slightly implicit.

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

Parameters3/5

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

Schema description coverage is 100% for the single dtxsid parameter, and the schema itself explains it as a DSSTox Substance Identifier. The description adds no further meaning to the parameter beyond saying it is for a chemical.

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

Purpose4/5

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

The description states a specific verb and resource: retrieve detailed environmental fate data for a chemical. It implicitly distinguishes itself from get_chemical_fate_summary through the word 'detailed', though it does not explicitly name the sibling.

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

Usage Guidelines2/5

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

It gives no explicit guidance about when to use this tool versus alternatives such as get_chemical_fate_summary. The intended usage is only weakly implied by 'detailed environmental fate data' and there are no exclusions or prerequisites.

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

get_chemical_fate_summaryget_chemical_fate_summaryB
Read-onlyIdempotent

Retrieve environmental fate summary for a chemical

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier
property_nameNoOptional fate property filter

Output Schema

ParametersJSON Schema
NameRequiredDescription

No output parameters

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds no behavioral context beyond the purpose statement (no note on what the summary contains or filtering behavior), but it does not contradict the annotations either.

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

Conciseness4/5

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

A single, front-loaded sentence with no filler or redundancy. It is efficient, though its brevity is arguably under-specification rather than true conciseness.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the tool is simple (2 params). The main gap is the lack of any routing guidance relative to get_chemical_fate_details, leaving the agent without enough to disambiguate in this dense sibling set.

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

Parameters3/5

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

Schema description coverage is 100%, so both dtxsid and the optional property_name filter are already documented in the schema. The description adds no parameter meaning beyond what the schema provides, which is the expected baseline when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb (Retrieve) and resource (environmental fate summary) scoped to a chemical, which is clear on its own. However, it offers no differentiation from the sibling tool get_chemical_fate_details, so an agent cannot tell from the description alone which one to pick.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the closely named get_chemical_fate_details sibling, nor any prerequisites or exclusions. Usage is only implied by the word 'summary' versus 'details' in the sibling name, which the description never addresses.

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

get_contract_manifestget_contract_manifestB
Read-onlyIdempotent

Return a machine-readable inventory of the live public resources, tools, MCP response schemas, portable schemas, and suite boundary notes

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
toolsYes
serverYes
resourcesYes
publicBoundaryYes
responseSchemasYes
portableObjectSchemasYes
publicContractReferencesYes

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description adds that the output is machine-readable and enumerates what is inventoried, which is useful, but says nothing about size, format, or whether the manifest can go stale.

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

Conciseness4/5

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

A single front-loaded sentence with no filler. It is somewhat list-heavy but every item listed is informative about the return contents.

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

Completeness4/5

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

With zero parameters, full schema coverage, an output schema present, and clear annotations, the description need not explain return shape. The only real omission is routing guidance, which is scored under usage guidelines.

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

Parameters4/5

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

The tool takes zero parameters, so the baseline of 4 applies; there is nothing for the description to clarify beyond the empty schema.

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

Purpose4/5

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

States a specific verb and resource ('Return a machine-readable inventory') and enumerates the inventory's contents, which no sibling tool does. It is clearly distinguishable from the data-fetching siblings, though the term 'suite boundary notes' is vague about what that actually means.

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

Usage Guidelines2/5

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

There is no statement of when to call this manifest versus the dozens of domain tools, nor that it is a discovery/meta operation. The agent must infer its role from the name and content list alone.

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

get_cpdat_vocabularyget_cpdat_vocabularyB
Read-onlyIdempotent

Return CPDat controlled vocabulary values (functional use, product use categories, or list presence tags)

ParametersJSON Schema
NameRequiredDescriptionDefault
vocab_nameYesVocabulary domain to list

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.2/5.0
Behavior3/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds that this returns controlled vocabulary values, which is implied by the name but not by annotations. It doesn't describe return format, pagination, or caching behavior; with output schema present, return format is less critical.

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

Conciseness4/5

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

The description is a single efficient sentence that front-loads the core purpose. It is appropriately sized for a simple lookup tool, though it could be slightly more informative without becoming verbose.

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

Completeness3/5

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

For a one-parameter read-only tool with full schema coverage and an output schema, the description is adequate but not rich. It doesn't explain the relationship to other exposure tools or what the vocabulary values represent, which would help an agent decide when to use it.

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

Parameters3/5

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

Schema description coverage is 100%, and the enum values (fc, puc, lpk) are documented in the schema. The description maps human-readable names to these domains, which is helpful, but this information is largely redundant with what the schema already provides. Baseline 3 is appropriate.

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

Purpose4/5

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

The description states a clear verb+resource: 'Return CPDat controlled vocabulary values'. It then lists the concrete domains (functional use, product use categories, list presence tags), which map to the enum values. However, it doesn't distinguish itself from siblings like search_cpdat or list_exposure_product_puc, leaving some ambiguity about when to call this tool versus those.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus alternatives. The sibling list includes search_cpdat and several list_exposure_* tools that overlap in purpose, yet the description offers no routing cues or prerequisites.

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

get_exposure_ccd_chem_weight_fractionsget_exposure_ccd_chem_weight_fractionsC
Read-onlyIdempotent

Retrieve CCD chemical weight fractions data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered structurally. The description adds nothing on top of that — no note on data provenance, update cadence, or what a missing DTXSID yields.

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

Conciseness4/5

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

A single short sentence with no filler or redundancy. It is efficient, though that efficiency comes at the cost of substance rather than from tight editing of richer content.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the lone parameter is documented. Still, the definition leaves 'CCD' undefined and gives no reason to pick this endpoint over its many exposure siblings, which is the main completeness gap for a one-parameter read tool.

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

Parameters3/5

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

Schema coverage is 100% with a single required dtxsid parameter that the schema itself documents as 'DSSTox Substance Identifier'. The description adds no format, casing, or identifier-resolution guidance, so the baseline 3 applies.

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

Purpose3/5

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

The description restates the tool name almost verbatim ('Retrieve CCD chemical weight fractions data' for get_exposure_ccd_chem_weight_fractions), so the agent learns little beyond the identifier itself. It does signal a read of a specific resource, but 'CCD' is unexplained jargon and there is no differentiation from the many sibling get_exposure_ccd_* tools.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative guidance is offered. With ~60 siblings, several of which are other CCD exposure endpoints, the agent gets no help choosing between them.

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

get_exposure_ccd_functional_useget_exposure_ccd_functional_useC
Read-onlyIdempotent

Retrieve CCD reported functional use data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, covering the safety/idempotency profile. The description adds nothing beyond that - no scoping constraints, coverage notes, or return behavior - so it contributes no behavioral value over the structured fields.

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

Conciseness4/5

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

A single short sentence with no wasted words, and the key action is front-loaded. It is efficient, though the terseness borders on under-specification rather than optimal conciseness.

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

Completeness2/5

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

The tool has an output schema so return values need no description, and the single param is fully documented. The description nonetheless omits what the agent most needs: the meaning of 'CCD' and how this tool differs from its exposure-functional-use siblings.

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

Parameters3/5

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

There is a single parameter and schema description coverage is 100%, so the schema already fully documents dtxsid as the DSSTox Substance Identifier. The description adds no format or usage detail beyond the schema, so the baseline 3 applies.

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

Purpose3/5

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

States a verb ('Retrieve') and a resource ('CCD reported functional use data'), so the basic purpose is identifiable. However, it never explains what 'CCD' is or how this differs from the closely related sibling get_exposure_functional_use, leaving the agent to guess at the distinction.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance and names no alternatives or conditions. With a near-identical sibling present (get_exposure_functional_use, batch_get_exposure_functional_use), the absence of any routing information is a real gap.

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

get_exposure_ccd_keywordsget_exposure_ccd_keywordsC
Read-onlyIdempotent

Retrieve CCD general use keywords

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare the full safety profile (readOnlyHint, idempotentHint, openWorldHint, destructiveHint=false), so the bar is lower, but the description contributes nothing beyond the safety data — no note on what 'keywords' represent, scoping, or any retrieval behavior.

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

Conciseness4/5

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

A single front-loaded phrase with zero filler or repetition. It is efficient, though its brevity borders on under-specification rather than genuine economy.

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

Completeness3/5

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

With an output schema present and full parameter coverage, the definition is minimally sufficient for a one-param lookup. What is missing is domain context (what CCD keywords are) and sibling differentiation, which an agent would need to route correctly.

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

Parameters3/5

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

One parameter with 100% schema description coverage ('dtxsid' documented as DSSTox Substance Identifier), so the schema carries the burden. The description adds no syntax, format, or example beyond what the schema already provides, which is the baseline-3 case.

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

Purpose3/5

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

States a verb (retrieve) and a resource (CCD general use keywords), so the basic action is identifiable. However, 'CCD general use keywords' is opaque jargon, and with six sibling tools named get_exposure_ccd_* the description does nothing to distinguish this one from get_exposure_ccd_functional_use, get_exposure_ccd_puc, etc.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of any alternative. The agent gets no signal about when this keyword lookup is preferable to the other CCD or exposure endpoints in the sibling set.

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

get_exposure_ccd_monitoring_dataget_exposure_ccd_monitoring_dataC
Read-onlyIdempotent

Retrieve CCD biomonitoring data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no note on data scope, latency, or the open-world nature of the biomonitoring lookup that would justify the openWorldHint. It simply restates the retrieval.

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

Conciseness4/5

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

A single front-loaded clause with zero filler. It is efficiently stated, though the extreme brevity is under-specification rather than tight, purposeful concision.

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

Completeness3/5

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

Because an output schema exists and parameter coverage is 100%, the description needn't explain return values or inputs. What remains missing is differentiation from the CCD sibling family, which matters here given the density of same-prefix tools. Adequate but with a clear routing gap.

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

Parameters3/5

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

Schema description coverage is 100% with a single required parameter (dtxsid, 'DSSTox Substance Identifier'), so the schema fully documents the input. The description adds no extra semantics beyond the schema, which is the expected baseline of 3.

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

Purpose3/5

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

States a verb (retrieve) and a resource (CCD biomonitoring data), identifying the underlying dataset. However, it does nothing to distinguish this tool from its five CCD siblings (get_exposure_ccd_puc, get_exposure_ccd_production_volume, get_exposure_ccd_keywords, etc.), and 'CCD biomonitoring' is left unexplained. Vague on what makes this dataset distinct.

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

Usage Guidelines2/5

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

No when-to-use guidance, no exclusions, and no mention of alternative CCD tools. The agent gets no signal on when this specific CCD endpoint is the right one versus the other four CCD calls.

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

get_exposure_ccd_production_volumeget_exposure_ccd_production_volumeC
Read-onlyIdempotent

Retrieve CCD production volume data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations fully declare the safety profile (readOnlyHint=true, idempotentHint=true, destructiveHint=false, openWorldHint=true), so the description is not obliged to restate them. But it adds nothing beyond them: no note on data coverage, recency, units, or what a missing record looks like. Net behavioral value contributed is essentially zero.

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

Conciseness3/5

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

One short sentence with no wasted clauses, but its brevity comes from omission rather than precision. It is front-loaded but contains almost no information payload.

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

Completeness2/5

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

An output schema exists, so return-value detail is not required. Still, with a large family of similar exposure/CCD tools and no siblings named for disambiguation, the description leaves the agent unable to confidently pick this tool over its neighbors or understand what 'production volume' data entails.

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

Parameters3/5

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

Schema description coverage is 100% for the single dtxsid parameter, so the schema already carries parameter meaning; per the baseline this is a 3. The description does not add format, resolution, or lookup semantics beyond what the schema field description states.

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

Purpose3/5

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

It gives a verb (Retrieve) and a resource (CCD production volume data), so the purpose is identifiable at a basic level. However, among many near-identical siblings (get_exposure_ccd_puc, get_exposure_ccd_monitoring_data, get_exposure_ccd_keywords, etc.) it makes no attempt to explain what 'CCD production volume' is or how it differs from those neighbors, so an agent must guess from the name alone.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no mention of required inputs, prerequisites, or alternatives. The only clue about invocation is the required dtxsid in the schema, which the description never references.

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

get_exposure_ccd_pucget_exposure_ccd_pucC
Read-onlyIdempotent

Retrieve CCD Product Use Category data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond this — no note on data source, coverage limits, or what a missing PUC record yields — so it contributes essentially zero 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.

Conciseness4/5

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

A single five-word sentence with the resource front-loaded and zero filler. It is efficient, though the extreme brevity borders on under-specification rather than disciplined conciseness.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the tool is a simple one-parameter read. Still, nothing explains what a CCD PUC record represents or how it relates to the other exposure siblings, leaving the agent to guess at selection.

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

Parameters3/5

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

Schema description coverage is 100%: the single required dtxsid parameter is documented as 'DSSTox Substance Identifier' in the schema itself. The description adds no syntax, format, or identifier-resolution guidance beyond that, so the baseline 3 applies.

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

Purpose4/5

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

States a clear verb ('Retrieve') and a specific resource ('CCD Product Use Category data'), so the agent knows what domain object is returned. However, it offers no differentiation from nearby siblings such as list_exposure_product_puc or get_exposure_ccd_functional_use, and 'CCD'/'PUC' acronyms are left unexplained.

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

Usage Guidelines2/5

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

There is no indication of when this tool should be chosen over the many other exposure/CCD siblings (e.g. get_exposure_product_data, list_exposure_product_puc). No prerequisites, no exclusions, no alternatives named — the agent must infer usage entirely from the name.

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

get_exposure_functional_useget_exposure_functional_useC
Read-onlyIdempotent

Retrieve reported functional use data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.7/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that – no hint about data source, coverage, or what 'reported' means as opposed to modeled or predicted use, which is the kind of context that would earn credit here.

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

Conciseness4/5

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

A single front-loaded sentence with zero padding, which is appropriate for a simple lookup. It is efficient, though its brevity is more a symptom of under-specification than of disciplined editing.

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

Completeness3/5

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

An output schema exists, so return-value explanation is not required, and the annotations carry the behavioral profile. Still, given the dense cluster of functional-use siblings, the description is too thin to let an agent confidently choose and scope this call.

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

Parameters3/5

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

Only one parameter (dtxsid) and schema description coverage is 100%, with the schema itself labeling it 'DSSTox Substance Identifier'. The description adds no meaning beyond the schema, so the baseline 3 applies.

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

Purpose3/5

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

States a clear verb ('Retrieve') and resource ('functional use data'), so the basic purpose is legible. However, it does nothing to distinguish itself from several close siblings such as get_exposure_ccd_functional_use, batch_get_exposure_functional_use, get_exposure_functional_use_probability, and list_exposure_functional_use_categories. An agent cannot tell from the description which functional-use endpoint is the right one.

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

Usage Guidelines2/5

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

The description offers no when-to-use guidance, no prerequisites, and no mention of alternatives. With four sibling tools covering functional-use-adjacent data, the absence of routing guidance is a real gap. Usage has to be inferred entirely from the name.

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

get_exposure_functional_use_probabilityget_exposure_functional_use_probabilityB
Read-onlyIdempotent

Retrieve functional use probability predictions

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds only that outputs are probability predictions, a minor restatement of the tool name, and discloses no auth requirements, rate limits, or model caveats.

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

Conciseness5/5

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

The description is a single, front-loaded sentence with no wasted words. It is appropriately sized for a simple one-parameter retrieval tool.

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

Completeness3/5

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

The output schema exists, so return values need not be explained, and the schema plus annotations cover parameter meaning and safety. However, with many overlapping exposure siblings, the description lacks enough context to confidently choose this tool over get_exposure_functional_use or related alternatives.

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

Parameters3/5

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

The input schema has 100% description coverage for the single dtxsid parameter, so the schema already defines its meaning. The description adds no parameter syntax, format, or filtering information beyond that baseline.

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

Purpose4/5

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

The description gives a specific verb and resource ('Retrieve functional use probability predictions'), so the core action is clear. However, it does not distinguish this tool from closely named siblings such as get_exposure_functional_use or list_exposure_functional_use_categories, leaving the agent to infer the difference.

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

Usage Guidelines2/5

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

The description provides no when-to-use guidance, no prerequisites, and no alternatives. Usage is only implied by the required dtxsid parameter and the tool name, which is insufficient for selecting among many exposure-related siblings.

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

get_exposure_httkget_exposure_httkC
Read-onlyIdempotent

Retrieve HTTK data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesDetailed HTTK records for a single chemical retrieved from the dedicated exposure HTTK endpoint.

TDQS

C2.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered without the description. The description adds nothing beyond that — no note on what the HTTK payload contains, whether a missing DTXSID errors or returns empty, or any caveats.

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

Conciseness2/5

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

The sentence is short and front-loaded but does no work — it conveys no information beyond the tool name, so it is under-specified rather than genuinely concise. This matches the LOW-tier pattern where brevity reflects missing content, not efficiency.

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

Completeness2/5

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

With one simple parameter, an output schema, and full annotations the structured metadata covers most of the interface, but the description leaves the agent unable to tell what HTTK output is or when this tool beats search_httk or batch_get_exposure_httk. For a tool sitting in a large exposure/httk family, that routing information is the missing piece.

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

Parameters3/5

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

Schema description coverage is 100% and the single dtxsid parameter is fully documented as "DSSTox Substance Identifier", so the schema carries the load. Per the baseline rule for high coverage, 3 is appropriate; the description adds no format hints or examples beyond what the schema already states.

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

Purpose2/5

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

"Retrieve HTTK data" essentially restates the tool name and title without saying what HTTK data means, what entity it is keyed on, or how it differs from the sibling search_httk and batch_get_exposure_httk. An agent cannot distinguish this from its siblings without opening the schema.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of alternatives such as search_httk (search) or batch_get_exposure_httk (multiple IDs). The single-ID vs. batch distinction is left entirely to inference from the tool name.

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

get_exposure_list_presenceget_exposure_list_presenceC
Read-onlyIdempotent

Retrieve list presence data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.3/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing beyond that — no note on scope, data source, or what 'list presence' records contain — so it earns no credit for behavioral context.

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

Conciseness3/5

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

It is a single short sentence with no bloat and the resource is front-loaded, but the brevity reflects under-specification rather than economy of expression. There is nothing to trim because there is almost nothing there.

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

Completeness2/5

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

An output schema exists so return values need not be described, but for a domain-specific exposure tool the description never explains what list-presence data represents or how it differs from the batch and tags siblings. Given the large sibling set, this leaves a real selection gap.

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

Parameters3/5

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

Schema description coverage is 100% with a single documented parameter (dtxsid = DSSTox Substance Identifier), so the baseline of 3 applies. The description adds no meaning beyond the schema, such as whether the identifier is validated or what happens for unknown IDs.

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

Purpose2/5

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

The description 'Retrieve list presence data' essentially restates the tool name get_exposure_list_presence in different words, adding no specificity about what 'list presence' means. It also fails to distinguish this from siblings batch_get_exposure_list_presence or list_exposure_list_presence_tags.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of the batch variant or the tags-listing sibling that an agent must choose between. The agent is left to infer selection criteria entirely from the tool name.

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

get_exposure_mmdb_aggregate_by_dtxsidget_exposure_mmdb_aggregate_by_dtxsidC
Read-onlyIdempotent

Retrieve MMDB aggregate records

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, covering the safety profile. The description adds nothing beyond that – no mention of what an "aggregate" contains, aggregation granularity, or any behavioral constraint. It neither contradicts nor enriches the annotations.

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

Conciseness4/5

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

A single short phrase with zero filler, so nothing needs trimming. It is front-loaded, though the extreme brevity edges toward under-specification rather than economical clarity.

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

Completeness2/5

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

An output schema exists, so return values needn't be described, but the description fails to clarify what "MMDB aggregate" means relative to the single-sample and by-medium variants, which is exactly what an agent needs in this dense sibling set. Too thin for the tool's complexity.

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

Parameters3/5

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

Schema description coverage is 100% for the single dtxsid parameter, so the schema carries the burden; baseline 3 applies. The description adds no meaning about how dtxsid is interpreted or what form the aggregate takes.

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

Purpose3/5

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

States a verb ("Retrieve") and a resource ("MMDB aggregate records"), so the basic purpose is identifiable. However, it does not distinguish this tool from close siblings like get_exposure_mmdb_aggregate_by_medium or get_exposure_mmdb_single_sample_by_dtxsid, and "aggregate records" is left undefined. Vague on scope.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus the numerous sibling MMDB/exposure tools. The name hints at dtxsid-based lookup, but the description itself offers no context, prerequisites, or alternatives.

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

get_exposure_mmdb_aggregate_by_mediumget_exposure_mmdb_aggregate_by_mediumC
Read-onlyIdempotent

Retrieve MMDB aggregate records filtered by medium

ParametersJSON Schema
NameRequiredDescriptionDefault
mediumYesMedium

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that - no sense of what aggregation means, granularity, or how results are grouped.

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

Conciseness4/5

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

One clean sentence with the resource and filter front-loaded and no filler. It is efficient but so terse that it omits information an agent needs rather than being admirably compact.

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

Completeness2/5

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

An output schema exists so return values need not be described, and annotations carry the safety profile. What is missing is disambiguation from the three sibling MMDB tools and any notion of what a valid medium is - gaps that matter given the crowded sibling set.

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

Parameters3/5

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

Schema description coverage is 100%, so the baseline is 3, but the coverage is nominal: the schema text is just "Medium" and the description likewise never enumerates or characterizes valid medium values. The sibling list_exposure_mmdb_mediums exists precisely for that, and neither field points to it.

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

Purpose4/5

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

The description names a specific verb (Retrieve) and resource (MMDB aggregate records) plus its filter (by medium), so the core operation is unambiguous. However, it does not distinguish this tool from the closely named siblings get_exposure_mmdb_aggregate_by_dtxsid and get_exposure_mmdb_single_sample_by_medium, which the agent must choose between.

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

Usage Guidelines2/5

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

The description states what filtering is applied but gives no guidance on when to prefer this aggregate-by-medium view over the aggregate-by-dtxsid view or the single-sample variant. With four near-identical MMDB siblings, explicit routing guidance is exactly what is missing.

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

get_exposure_mmdb_single_sample_by_dtxsidget_exposure_mmdb_single_sample_by_dtxsidC
Read-onlyIdempotent

Retrieve MMDB single-sample data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.5/5.0
Behavior2/5

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

The annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond that — no note on data origin, sample scope, or what a 'single sample' record represents, which is the key behavioral ambiguity in this domain.

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

Conciseness3/5

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

It is a single, front-loaded sentence with no wasted words, but it is under-specified rather than genuinely concise. Brevity here comes at the cost of the disambiguation the agent needs against closely named siblings.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but the description omits any distinction from the four closely related MMDB tools and gives no usage context. For a tool embedded in a dense exposure-analysis API, it is too thin to guide correct selection.

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

Parameters3/5

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

Schema description coverage is 100% and the single dtxsid parameter is documented in the schema as 'DSSTox Substance Identifier'. The description adds no additional meaning about the identifier's format or role, so the baseline of 3 applies.

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

Purpose3/5

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

The description states a verb (Retrieve) and a resource (MMDB single-sample data), which is clearer than a tautology. However, it does not disambiguate from the very similar siblings get_exposure_mmdb_single_sample_by_medium, get_exposure_mmdb_aggregate_by_dtxsid, and get_exposure_mmdb_aggregate_by_medium, nor does it clarify what 'MMDB' or 'single sample' means in this context. Purpose is identifiable but not differentiated.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus the medium-keyed variant or the aggregate variants. The description provides no context, exclusions, or prerequisites beyond the bare purpose.

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

get_exposure_mmdb_single_sample_by_mediumget_exposure_mmdb_single_sample_by_mediumB
Read-onlyIdempotent

Retrieve MMDB single-sample data filtered by medium

ParametersJSON Schema
NameRequiredDescriptionDefault
mediumYesMedium

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The description adds only the medium-filter scoping, with no mention of return shape, pagination, or valid medium values, so it is marginally useful at best.

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

Conciseness4/5

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

One front-loaded sentence with no filler or redundancy. It is efficiently sized, though it is terse to the point of omitting useful routing context.

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

Completeness3/5

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

With an output schema present, return values need no explanation, and the single parameter is fully covered by the schema. However, the definition omits the routing guidance needed to pick this tool over its MMDB siblings and the aggregate variant.

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

Parameters3/5

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

Schema description coverage is 100% for the single 'medium' parameter, so the schema already does the documenting. The description confirms that medium acts as a filter but adds no format, naming, or valid-value detail beyond that baseline.

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

Purpose4/5

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

States a specific verb and resource ('Retrieve MMDB single-sample data') and the scope ('filtered by medium'). The 'single-sample' phrasing implicitly distinguishes it from the aggregate MMDB siblings, though it never names them explicitly.

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

Usage Guidelines2/5

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

No when-to-use guidance and no alternatives named. An agent cannot tell from the description whether to call this versus get_exposure_mmdb_single_sample_by_dtxsid or get_exposure_mmdb_aggregate_by_medium.

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

get_exposure_product_dataget_exposure_product_dataC
Read-onlyIdempotent

Retrieve CPDat product data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.5/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered structurally. The description adds no behavioral context beyond that – no input expectations, no note that it queries an external/open-world database, no scope limits.

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

Conciseness3/5

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

At four words it is certainly compact and front-loaded, but the brevity crosses into under-specification rather than economy – nothing earns its place because very little is said.

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

Completeness2/5

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

An output schema exists, so return values need not be spelled out, but for a tool sitting among many similarly named exposure/CPDat siblings the description is too thin: it never clarifies scope, relationship to batch variants, or what distinguishes CPDat product data from other exposure endpoints.

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

Parameters3/5

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

Schema description coverage is 100%: the sole dtxsid parameter is documented as DSSTox Substance Identifier. The description adds nothing about the identifier format or where to obtain it, so the baseline 3 is appropriate.

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

Purpose3/5

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

States a specific verb (Retrieve) and resource (CPDat product data), which is more than a tautology. However, it does not explain what CPDat product data is or how this differs from the close sibling batch_get_exposure_product_data or from search_cpdat, leaving the agent to infer scope.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of the single-record-vs-batch alternative (batch_get_exposure_product_data) despite that sibling existing in the toolset. The agent gets no routing signal beyond the name.

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

get_full_listget_full_listB
Read-onlyIdempotent

Get all chemicals in a specific list

ParametersJSON Schema
NameRequiredDescriptionDefault
list_nameYesName of the chemical list

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.2/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, covering the safety profile. The description only adds the 'all chemicals' scope notion, implying complete rather than filtered retrieval, but says nothing about pagination, result size, or behavior on an unknown list_name.

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

Conciseness4/5

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

A single, front-loaded sentence with no filler or redundancy. It is efficient, though arguably terse to the point of under-specification.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, but for a list-retrieval tool the description omits the key operational detail of where valid list_name values come from. Adequate but with a clear gap.

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

Parameters3/5

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

Schema description coverage is 100%, so list_name is fully documented in the schema, and the description adds no format, casing, or validity semantics beyond it. Baseline 3 applies when the schema does the work.

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

Purpose4/5

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

States a specific verb (get) and resource (all chemicals in a specific list), so the retrieval scope is unambiguous. However, it does not distinguish itself from the natural sibling get_public_list_names, which an agent would need to consult to discover valid list_name values.

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

Usage Guidelines2/5

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

There is no when-to-use guidance, no prerequisites, and no mention of how to obtain a valid list_name. The obvious complement, get_public_list_names, is never referenced despite being in the sibling set.

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

get_hazard_adme_iviveget_hazard_adme_iviveC
Read-onlyIdempotent

Retrieve ADME/IVIVE hazard data for a chemical.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesChemical identifier (DTXSID).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered. The description adds nothing beyond this – no return format, data coverage, or caveats about the ADME/IVIVE source.

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

Conciseness4/5

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

A single well-formed sentence with no waste and the key resource front-loaded. It is economical, though arguably too terse for the domain jargon involved.

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

Completeness3/5

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

An output schema exists, so return values need not be described, and the one required parameter is documented in the schema. However, the description leaves the domain term ADME/IVIVE entirely unexplained, which leaves an agent without domain knowledge unable to predict what it will get back.

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

Parameters3/5

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

Schema description coverage is 100% and the single dtxsid parameter is fully documented in the schema. The description adds no format or syntax detail beyond what the schema already provides, so the baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Retrieve) and a specific resource (ADME/IVIVE hazard data) scoped to a chemical. It distinguishes itself from the many sibling hazard tools (toxval, cancer, genetox, pprtv, iris) by naming the ADME/IVIVE dataset, though it doesn't explain what that dataset contains.

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

Usage Guidelines2/5

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

No guidance on when to use this tool versus alternatives like search_hazard, get_hazard_toxval, or get_chemical_fate_details. The agent must infer usage purely from the tool name.

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

get_hazard_cancer_summaryget_hazard_cancer_summaryB
Read-onlyIdempotent

Retrieve cancer hazard summary for a single chemical.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesChemical identifier (DTXSID).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.2/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, fully covering the safety profile. The description adds no behavioral context beyond that, such as what the summary contains, its source, or any latency/auth caveats.

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

Conciseness5/5

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

A single front-loaded sentence with zero filler. The resource and scope are stated immediately with no waste.

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

Completeness4/5

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

For a simple one-parameter read tool with an output schema (so return values need not be described) and annotations covering safety, the description is largely sufficient. It could be tightened by naming the batch sibling explicitly, but nothing critical is missing.

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

Parameters3/5

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

Schema description coverage is 100% and there is only one parameter, so the schema fully documents the DTXSID input. The description adds nothing beyond the schema's own wording, which is the baseline-3 case.

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

Purpose4/5

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

States a specific verb (Retrieve) and resource (cancer hazard summary), and the qualifier 'for a single chemical' implicitly distinguishes it from the sibling batch_get_hazard_cancer_summary. It is clear, though it doesn't explicitly name the alternative it is not.

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

Usage Guidelines2/5

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

There is no explicit when-to-use guidance or prerequisite statement. The 'single chemical' phrasing faintly implies it is the non-batch variant, but the agent must infer this from the sibling list rather than being told.

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

get_hazard_genetox_detailsget_hazard_genetox_detailsC
Read-onlyIdempotent

Retrieve genotoxicity detailed data for a chemical.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesChemical identifier (DTXSID).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds nothing beyond that — no note on data scope, coverage, pagination, or what 'detailed' includes — so it contributes no behavioral context of its own.

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

Conciseness4/5

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

A single short sentence with the verb and resource front-loaded and no filler. It is efficient, though its brevity is partly a function of how little it says rather than disciplined editing.

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

Completeness3/5

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

An output schema exists, so return values need no explanation, and the tool is a simple keyed getter with one required parameter. The description is technically sufficient to invoke the tool, but it omits the summary-vs-details routing that a sibling-heavy hazard namespace makes genuinely useful.

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

Parameters3/5

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

Schema description coverage is 100% and the single dtxsid parameter is documented there as the chemical identifier. The phrase 'for a chemical' in the description maps loosely onto that parameter but adds no format or resolution guidance beyond the schema, so the baseline 3 applies.

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

Purpose4/5

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

The description states a specific verb ('Retrieve') and resource ('genotoxicity detailed data for a chemical'), which is clear enough that an agent can distinguish it from most sibling tools. It does not explicitly name get_hazard_genetox_summary as the summary-level alternative, so sibling differentiation relies on the word 'detailed' alone.

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

Usage Guidelines2/5

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

There is no explicit guidance on when to use this tool versus get_hazard_genetox_summary or batch_get_hazard_genetox_details. The only hint is the implied detail-vs-summary distinction, which the agent must infer from the name.

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

get_hazard_genetox_summaryget_hazard_genetox_summaryC
Read-onlyIdempotent

Retrieve genotoxicity summary data for a chemical.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesChemical identifier (DTXSID).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive, openWorld, so the safety profile is covered. The description adds nothing beyond that – no indication of what the summary aggregates, how it differs from the details endpoint, or any coverage/limits caveats.

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

Conciseness4/5

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

One short, front-loaded sentence with no filler. It is efficient, though its brevity borders on under-specification rather than tight conciseness.

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

Completeness3/5

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

Output schema exists, so return values need not be described, and annotations cover safety. The missing piece is sibling disambiguation (summary vs details vs batch variants), which matters given the dense hazard namespace.

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

Parameters3/5

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

Single parameter with 100% schema description coverage ('Chemical identifier (DTXSID)'), so the schema carries the semantics. The description adds no format hints (e.g., DTXSID prefix) beyond what the schema states; baseline 3 applies.

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

Purpose4/5

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

States a specific verb (Retrieve) and resource (genotoxicity summary data) scoped to a chemical. However, it offers no differentiation from close siblings like get_hazard_genetox_details or batch_get_hazard_genetox_summary, leaving the agent to infer what 'summary' means versus 'details'.

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

Usage Guidelines2/5

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

No when-to-use guidance, no prerequisites, and no mention of the obvious alternatives (details vs summary, single vs batch). The agent must guess which genotoxicity endpoint to call.

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

get_hazard_hawcget_hazard_hawcB
Read-onlyIdempotent

Retrieve HAWC link mapper data for a chemical.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesChemical identifier (DTXSID).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.1/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered. The description adds no further behavioral context (e.g., what HAWC link mapper data contains, any constraints, or the nature of the retrieval), making it purely a restatement of the tool name.

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

Conciseness5/5

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

A single, front-loaded sentence with zero wasted words. It is exactly as long as needed to convey the action and resource.

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

Completeness3/5

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

Given the simplicity (one required parameter), the presence of rich annotations, and an output schema, the description covers the bare essentials. However, it does not provide enough context to help an agent decide when this tool is preferable to its many siblings, leaving a gap in completeness.

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

Parameters3/5

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

The single parameter (dtxsid) is fully documented in the input schema with 100% coverage. The description adds no additional parameter semantics, so the baseline of 3 is appropriate when the schema does the heavy lifting.

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

Purpose4/5

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

States a specific verb (Retrieve) and resource (HAWC link mapper data) for a given chemical. Clear enough for an agent to understand what it does, but it does not differentiate this tool from the many other hazard-related siblings, so it stops short of a 5.

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

Usage Guidelines2/5

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

The description provides no explicit when-to-use guidance, no alternatives, and no conditions or exclusions. At best, usage is implied by the resource name, which falls short of actionable guidance.

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

get_hazard_irisget_hazard_irisC
Read-onlyIdempotent

Retrieve IRIS hazard data for a chemical.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesChemical identifier (DTXSID).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is fully covered. The description adds nothing beyond that — no note on IRIS data coverage, versioning, or what a 'chemical' lookup implies. With annotations carrying the safety burden, the description still contributes essentially zero extra 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.

Conciseness4/5

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

A single short sentence with zero padding, front-loaded with the verb and resource. It is efficient, though its brevity reflects under-specification rather than disciplined economy.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, and annotations cover safety. But against a very crowded hazard-tool family, the description does nothing to help an agent choose this endpoint correctly, leaving the definition incomplete for its decision role.

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

Parameters3/5

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

Schema description coverage is 100%, with the single dtxsid parameter documented in the schema itself. The description adds no meaning beyond 'for a chemical', so the baseline of 3 applies — the schema does the work and the description does not compensate or extend.

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

Purpose3/5

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

The description names a specific verb (retrieve), a resource (IRIS hazard data), and an object (a chemical), which is clearer than a bare name restatement. However, it offers no differentiation from the many sibling hazard tools (get_hazard_toxval, get_hazard_cancer_summary, get_hazard_genetox_summary, get_hazard_hawc, etc.), so an agent cannot tell from the text why it would pick IRIS over the alternatives.

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

Usage Guidelines2/5

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

There is no indication of when to use this tool versus the other hazard endpoints, nor any prerequisites or exclusions. The sibling list is dense with overlapping 'hazard' tools, so the absence of routing guidance is a real gap.

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

get_hazard_pprtvget_hazard_pprtvC
Read-onlyIdempotent

Retrieve PPRTV hazard data for a chemical.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesChemical identifier (DTXSID).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already cover read-only, idempotent, open-world, and non-destructive traits, lowering the bar. However, the description adds no behavioral context whatsoever—nothing about what kind of data PPRTV contains, whether authentication is needed, or any limitations.

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

Conciseness4/5

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

One short sentence with no wasted words, front-loaded with the verb and resource. It is appropriately concise, though arguably too minimal to be maximally useful given the tool's context.

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

Completeness3/5

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

The tool is simple (one required parameter), has an output schema, and annotations cover safety. The description is minimally sufficient to invoke it, but it does not explain the obscure 'PPRTV' acronym or provide any routing context among dozens of sibling hazard tools.

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

Parameters3/5

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

Schema description coverage is 100%, and the single parameter (dtxsid) is already documented in the schema as a chemical identifier. The description does not mention the parameter or add any usage detail beyond what the schema provides, so the baseline of 3 is appropriate.

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

Purpose4/5

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

States a specific verb ('Retrieve') and resource ('PPRTV hazard data') for a chemical. The resource name is unique among siblings, so an agent can differentiate it, but the description does not explicitly say how it differs from other hazard endpoints like toxval or iris.

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

Usage Guidelines2/5

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

No when-to-use guidance, no alternatives, no prerequisites. The description merely states the retrieval action without indicating when PPRTV data is the right choice versus the many other hazard tools.

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

get_hazard_skin_eyeget_hazard_skin_eyeC
Read-onlyIdempotent

Retrieve skin and eye hazard data for a single chemical.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesChemical identifier (DTXSID).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false, and openWorldHint=true, so the safety profile is fully covered externally. The description adds no behavioral context beyond that—no auth requirements, no coverage/pagination notes, no indication of what happens for unknown DTXSIDs.

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

Conciseness4/5

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

A single front-loaded sentence with no waste; the verb and resource come first. It is efficient, though so terse that it arguably omits useful routing information rather than trimming filler.

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

Completeness3/5

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

For a simple single-record lookup with a rich output schema and full annotations, the description is minimally sufficient—the agent knows what it retrieves. Its completeness gap is the lack of any routing against the batch sibling and other hazard summary tools, which is the main decision an agent must make here.

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

Parameters3/5

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

Schema description coverage is 100% for the single dtxsid parameter, so the schema carries full parameter documentation. The description adds nothing about the identifier format or accepted values, which is the baseline 3 expected when the schema does the heavy lifting.

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

Purpose4/5

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

The description gives a specific verb (Retrieve) and resource (skin and eye hazard data) scoped to a single chemical, so an agent knows what comes back. However, it does not distinguish itself from the sibling batch_get_hazard_skin_eye or other hazard tools, so the sibling differentiation required for a 5 is absent.

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

Usage Guidelines2/5

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

No when-to-use, when-not-to-use, or alternative tool is named. The phrase 'for a single chemical' weakly implies a single-record fetch and hints at a batch counterpart, but with batch_get_hazard_skin_eye sitting right there in the sibling list, an explicit routing sentence is needed and absent.

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

get_hazard_toxrefget_hazard_toxrefB
Read-onlyIdempotent

Retrieve ToxRefDB data (summary, data, effects, or observations) by DTXSID, study ID, or study type.

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesIdentifier corresponding to the selected lookup type.
datasetYesToxRefDB dataset to query.
lookup_typeYesLookup mode for the query.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds the dataset enumeration but nothing about pagination, result size, rate limits, or whether the four dataset modes return materially different payloads.

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

Conciseness5/5

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

A single front-loaded sentence with the verb, resource, and valid inputs all in one pass. There is no filler or redundancy to trim.

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

Completeness3/5

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

With a full schema, two enums, an output schema, and read-only annotations, the structured data carries most of the load. What is missing is routing context against the many sibling hazard tools and any indication of how the lookup types differ in behavior.

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

Parameters3/5

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

Schema description coverage is 100% and both enums (dataset, lookup_type) are self-documenting. The description restates those same values rather than adding format details, such as what a valid DTXSID or study ID string looks like, so the baseline of 3 applies.

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

Purpose4/5

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

Names a specific verb (Retrieve) and resource (ToxRefDB data), and enumerates the four dataset shapes (summary, data, effects, observations). This separates it from the other hazard siblings like get_hazard_toxval, though it never explicitly contrasts itself with batch_get_hazard_toxref.

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

Usage Guidelines2/5

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

The description lists acceptable lookup modes but gives no guidance on when to choose this tool over get_hazard_toxval, the batch variant, or the other hazard summary tools. An agent must infer selection criteria from the name alone.

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

get_hazard_toxvalget_hazard_toxvalB
Read-onlyIdempotent

Retrieve full ToxValDB hazard data for a single chemical.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesChemical identifier (DTXSID).

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.4/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds only the notion that the full (not summarized) ToxValDB record is returned, and says nothing about response size, pagination, or empty-result behavior.

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

Conciseness4/5

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

A single efficient sentence with the action and scope front-loaded and no filler. It is not padded, though it is arguably too terse to be maximally useful.

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

Completeness3/5

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

Annotations and the output schema relieve the description of safety and return-value explanations, and the lone parameter is fully documented. Still, for a 'full hazard data' retrieval the description never characterizes what ToxValDB content is included or how it differs from the summary hazard tools, leaving a gap an agent might need to close.

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

Parameters3/5

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

Only one parameter, and the schema documents it at 100% coverage ('Chemical identifier (DTXSID)'), so the schema carries the burden. The description adds nothing about DTXSID format, case, or how to obtain one; baseline 3 applies.

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

Purpose4/5

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

States a specific verb ('Retrieve') and resource ('full ToxValDB hazard data') scoped to a single chemical, which distinguishes it from its batch sibling batch_get_hazard_toxval and from other hazard endpoints (skin_eye, cancer, genetox). It does not explicitly name those siblings, but the resource specificity is enough to place it.

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

Usage Guidelines3/5

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

The phrase 'for a single chemical' implies the single-record counterpart of the batch tool, but there is no explicit when-to-use, when-not-to-use, or prerequisite guidance (e.g., that a DTXSID must first be resolved). Usage is inferable rather than stated.

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

get_public_list_namesget_public_list_namesB
Read-onlyIdempotent

Get names of available public chemical lists

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.3/5.0
Behavior3/5

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

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint=true, so the safety and idempotency profile is fully covered. The description adds only the scope of the return (names only, not list contents), which is a mild but real clarification; nothing about pagination or external-source behavior is added.

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

Conciseness4/5

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

A single short, front-loaded sentence with no wasted words. It is perhaps slightly terse for a discovery tool, but nothing is padded or redundant.

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

Completeness3/5

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

An output schema exists, so return values need not be explained, and the parameterless signature makes the call trivial. Still, for a discovery tool in a crowded sibling set, the description omits how the names relate to downstream tools and why an agent would choose it over get_full_list.

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

Parameters4/5

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

The tool takes zero parameters, so there is nothing for the description to compensate for. Baseline 4 applies since the schema is trivially complete and no parameter meaning is missing.

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

Purpose4/5

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

States a specific verb (Get) and resource (names of public chemical lists), so the purpose itself is unambiguous. However, it does not distinguish itself from sibling tools like get_full_list or list_exposure_list_presence_tags, which an agent could easily confuse with this one.

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

Usage Guidelines2/5

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

There is no guidance on when to call this versus alternatives, no mention that it is typically a discovery/first step, and no indication of how the returned names are consumed. The agent must infer the workflow from the name alone.

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

get_seem_demographicget_seem_demographicC
Read-onlyIdempotent

Fetch SEEM demographic exposure predictions

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered elsewhere. The description adds nothing beyond that — no note on rate limits, response shape, or what happens with an unknown DTXSID.

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

Conciseness4/5

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

A single front-loaded sentence with zero filler, which is efficient. It is arguably too terse for a domain-specific prediction endpoint, but nothing is wasted.

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

Completeness2/5

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

An output schema exists, so return values need not be explained, but the description omits any notion of what 'demographic exposure predictions' contain or how this endpoint relates to its batch and general siblings. For a domain-jargon tool with a large sibling set, that leaves real gaps.

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

Parameters3/5

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

Schema coverage is 100% and the single parameter (dtxsid, 'DSSTox Substance Identifier') is fully documented in the schema, so the description is not required to carry the load. The description adds no meaning beyond the schema, which is the baseline-3 case.

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

Purpose4/5

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

The description pairs a specific verb ('Fetch') with a specific resource ('SEEM demographic exposure predictions'), which is enough for an agent to recognize the domain. However, it never defines what 'SEEM demographic' predictions are or contrasts them with the sibling get_seem_general, so differentiation rests only on the name.

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

Usage Guidelines2/5

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

No guidance on when to choose this tool over get_seem_general or batch_get_seem_demographic, and no stated prerequisites for the single required identifier. The agent must infer usage entirely from the tool name.

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

get_seem_generalget_seem_generalC
Read-onlyIdempotent

Fetch SEEM general exposure predictions

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesDSSTox Substance Identifier

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.6/5.0
Behavior2/5

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

Annotations already declare readOnlyHint, idempotentHint, and destructiveHint=false, so the safety profile is covered. The description contributes nothing beyond the annotation-implied 'safe read' semantics: no note on coverage of SEEM data, staleness, or auth/rate constraints that would matter for an open-world lookup.

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

Conciseness3/5

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

A single short phrase with no wasted words, but it is under-specified rather than genuinely concise. There is no structure or front-loaded qualifier beyond the resource name.

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

Completeness3/5

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

Output schema exists, so return values need not be described, and a one-parameter read tool has a low burden. Still, the tool's distinctive concept ('general' versus 'demographic' versus batch) is never explained, leaving the agent to guess scope.

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

Parameters3/5

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

Only one parameter and schema coverage is 100%, so the schema fully documents dtxsid as the DSSTox Substance Identifier. The description adds no format or resolution guidance, which is the expected baseline when the schema already does the work.

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

Purpose3/5

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

States a specific verb (Fetch) and resource (SEEM general exposure predictions), but 'general' is undefined jargon and the description does nothing to distinguish this from close siblings like get_seem_demographic or batch_get_seem_general. An agent cannot tell from the text how 'general' differs from 'demographic'.

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

Usage Guidelines2/5

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

No when-to-use guidance, no exclusions, and no mention of the batch or demographic alternatives despite them being immediate siblings. The agent must infer the single-vs-batch and general-vs-demographic choice entirely on its own.

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

indigo_convert_molfileindigo_convert_molfileC
Read-onlyIdempotent

Convert a molfile using Indigo toolkit endpoints

ParametersJSON Schema
NameRequiredDescriptionDefault
molfileYesMolfile contents (V2000/V3000)
output_formatYesDesired transformation

Output Schema

ParametersJSON Schema
NameRequiredDescription
valueYes
outputFormatYes

TDQS

C2.9/5.0
Behavior2/5

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

Annotations already declare readOnly, idempotent, non-destructive and open-world behavior, so the safety profile is covered. The description adds nothing beyond noting an Indigo wrapper – no note on error behavior for invalid molfiles, unsupported conversions, or round-trip fidelity, which is the context an agent would actually want for a chemistry conversion tool.

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

Conciseness3/5

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

It is a single short sentence with no redundancy and the key resource is front-loaded, which is good structure. But the brevity reflects under-specification rather than efficient compression – the sentence carries almost no information beyond what the tool name already conveys.

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

Completeness3/5

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

With only two fully-documented parameters and an output schema present, the tool does not need return-value explanation. What is missing is the routing context – when this Indigo-based conversion is preferable to the OPSIN name converter or identifier resolution – leaving the definition minimally viable for a simple tool.

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

Parameters3/5

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

Schema description coverage is 100% and the enum already enumerates the seven valid output formats with a description for each parameter. The description adds no additional meaning about the molfile string format or the semantic difference between mol_v2000 and mol_v3000 outputs, so the baseline 3 applies.

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

Purpose4/5

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

The description gives a specific verb ("Convert") and resource ("molfile"), which is clear enough to distinguish it from the wealth of search/get siblings. However, it does not differentiate itself from the equally conversion-oriented sibling opsin_convert_name or from resolve_chemical_identifier, so an agent cannot tell which converter applies from the text alone.

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

Usage Guidelines2/5

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

There is no guidance on when to use this tool versus alternatives such as opsin_convert_name or resolve_chemical_identifier, and no statement of prerequisites or supported input conditions. Usage must be inferred entirely from the name and the schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_exposure_functional_use_categorieslist_exposure_functional_use_categoriesB
Read-onlyIdempotent

List functional use categories

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, covering the full safety profile. The description adds nothing beyond that – no note on whether the category list is static or dynamic, or what an empty result means.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single four-word phrase with zero waste and the resource front-loaded. It is efficient, though the brevity borders on under-specification rather than tight editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the annotations cover the safety profile for a zero-parameter read. Still, the description leaves the agent guessing what a "functional use category" is and how it relates to the exposure functional-use endpoints.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to explain; the baseline for a no-argument tool is 4. The description does not need to compensate for any schema gap.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ("List") and a specific resource ("functional use categories"), so an agent knows exactly what it returns. However, it offers no differentiation from similar list/vocabulary siblings such as list_exposure_list_presence_tags, list_exposure_product_puc, or list_exposure_mmdb_mediums.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus the other list_* vocabulary tools, no stated prerequisites, and no mention of how the result feeds into get_exposure_functional_use. The agent must infer the use case entirely.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_exposure_list_presence_tagslist_exposure_list_presence_tagsC
Read-onlyIdempotent

List list-presence tags

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.6/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations declare readOnlyHint=true, idempotentHint=true, openWorldHint=true, and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond the annotations—no info on rate limits, tag semantics, or what 'list-presence' means. With annotations carrying the safety burden, a 3 reflects minimal added value.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single short phrase, which is concise but under-specified rather than efficient. It is front-loaded but contains almost no information beyond the title.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is not required. However, for a tool among dozens of similarly named list/get exposure tools, the description fails to clarify the domain concept ('list-presence tags') or distinguish it from siblings, leaving an agent unable to confidently select it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Zero parameters, so per the rubric this is a baseline 4. There are no parameters to describe and the description correctly implies a simple enumeration with no inputs.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose2/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description 'List list-presence tags' merely restates the tool name with no added specificity. It doesn't clarify what a 'list-presence tag' is or how this tool differs from siblings like get_exposure_list_presence or list_exposure_product_puc. The verb+resource is technically present but tautological.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this tool versus alternatives. With many sibling list_* and get_*_exposure_* tools, an agent has no signal about when this enumeration is appropriate. Implied usage only.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_exposure_mmdb_mediumslist_exposure_mmdb_mediumsC
Read-onlyIdempotent

List MMDB medium categories

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, openWorldHint=true and destructiveHint=false, covering the safety profile. The description adds nothing beyond that — no note about the fixed/static nature of the category list or caching, so it earns no credit over the structured fields.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single four-word phrase with zero padding and the verb front-loaded. It is efficient, though the brevity borders on under-specification rather than optimal conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and there are no parameters to document. Still, for a lookup whose only purpose is to feed sibling MMDB tools, the description omits the connecting context, leaving it minimally adequate.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is no parameter semantics to convey; the baseline for a 0-param tool is 4.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (List) and resource (MMDB medium categories), so the agent knows it enumerates categories rather than fetching data. However, 'MMDB' is unexplained jargon and the description does nothing to distinguish it from near-identical siblings like list_exposure_functional_use_categories or list_exposure_product_puc.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No indication of when to call this tool or what to do with the result. It never mentions that the returned categories are the valid inputs for get_exposure_mmdb_single_sample_by_medium / get_exposure_mmdb_aggregate_by_medium, which is the obvious reason an agent would need this lookup.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

list_exposure_product_puclist_exposure_product_pucC
Read-onlyIdempotent

List product use categories (PUC)

ParametersJSON Schema
NameRequiredDescriptionDefault

No parameters

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true, destructiveHint=false and openWorldHint=true, so the safety profile is covered structurally. The description adds nothing beyond that — no note on whether the list is static or live, cacheable, or how large it is — so it contributes no behavioral context of its own.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or redundancy. Its brevity is efficient rather than padded, though it is arguably too terse to be useful on its own.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With zero params and an output schema present, the description does not need to explain return values, so the remaining burden is small. Still, for a tool sitting among several overlapping category/PUC listings, it omits the one thing an agent needs: how it differs from get_exposure_ccd_puc and the other list_* taxonomy tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters4/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

The tool takes zero parameters, so there is nothing for the description to disambiguate; baseline 4 applies. No parameter guidance is needed here.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a clear verb+resource ('List product use categories'), but 'PUC' is left unexpanded and there is no differentiation from sibling category-listing tools such as list_exposure_functional_use_categories or get_exposure_ccd_puc. An agent can tell it lists a taxonomy, but not which taxonomy relative to its neighbors.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description gives no when-to-use guidance, no prerequisites, and no mention of alternatives. It is only inferable that this exists to enumerate valid PUC values, and nothing in the text confirms or denies that.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

metadata_get_applicability_domainmetadata_get_applicability_domainC
Read-onlyIdempotent

Fetch applicability domain configuration for a specific model

ParametersJSON Schema
NameRequiredDescriptionDefault
model_nameYes

Output Schema

ParametersJSON Schema
NameRequiredDescription
modelNo
policyNo
versionNo
criteriaNo
errorCodeNo
referencesNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, non-destructive and openWorld, so the safety profile is fully covered. The description adds nothing beyond them: no indication of what the configuration contains, whether an unknown model_name errors or returns empty, or any auth/lookup requirement.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, so it is concise and easy to scan. Its brevity, however, reflects under-specification rather than disciplined editing.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained. Still, for a tool keyed on a free-form model identifier, the description omits how to source valid model names and how it relates to the sibling list tool, leaving a gap an agent must guess around.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% for the single parameter, and the description only vaguely alludes to it via 'a specific model'. It never clarifies whether model_name is a human-readable name, a model ID, or where the caller obtains a valid value (e.g. from metadata_list_applicability_domain).

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (fetch) and resource (applicability domain configuration) scoped to a model, which separates it from the sibling metadata_list_applicability_domain. No explicit sibling callout, but the singular 'for a specific model' scope is clear.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no statement of when to use this versus metadata_list_applicability_domain or metadata_get_model_card, and no prerequisites (e.g. you must already have a valid model_name). Usage is only inferable from the tool name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

metadata_get_model_cardmetadata_get_model_cardC
Read-onlyIdempotent

Retrieve CompTox model cards with optional filters and pagination

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo
endpointNo
complianceNo
model_nameNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
modelCardsNo
nextCursorNo

TDQS

C2.9/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds only that results can be filtered and paginated, which is a small behavioral increment and omits pagination/cursor semantics and error behavior.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler or repetition. It is efficient, though its brevity borders on under-specification rather than genuine conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need not be described, but with 5 all-optional parameters at 0% schema coverage and no required-parameter guidance, the description leaves an agent unable to construct a meaningful query. It should at least explain what a model card is and what each filter narrows.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 0% across 5 parameters, so the description must compensate and largely does not. It gestures at 'filters' and 'pagination', which maps loosely onto model_name/compliance/endpoint and limit/cursor, but gives no meaning for any parameter, no enum values (approved/draft), and no format for cursor or endpoint.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Retrieve) and resource (CompTox model cards), so the agent knows the data domain. However, it does not differentiate itself from the many sibling metadata_* and catalog tools, so an agent cannot tell from the description alone why it would pick this over metadata_get_applicability_domain or get_contract_manifest.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives among the numerous sibling tools. 'Optional filters and pagination' describes the schema, not the usage context.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

metadata_list_applicability_domainmetadata_list_applicability_domainC
Read-onlyIdempotent

List applicability domain reference definitions

ParametersJSON Schema
NameRequiredDescriptionDefault
limitNo
cursorNo

Output Schema

ParametersJSON Schema
NameRequiredDescription
nextCursorNo
applicabilityDomainsNo

TDQS

C2.8/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety profile is covered. The description adds nothing beyond that – it says nothing about pagination behavior, result scope, or what 'reference definitions' actually contain.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short, front-loaded sentence with no waste. It is efficient, though its brevity reflects under-specification rather than disciplined conciseness.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values needn't be explained, and the operation is simple. But the undocumented pagination parameters and the unresolved overlap with metadata_get_applicability_domain leave real gaps for correct invocation.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters2/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 0% – neither 'limit' nor 'cursor' is documented anywhere. The description does not compensate, never mentioning pagination or the cursor/limit mechanism, so an agent must infer pagination semantics entirely.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('List') and resource ('applicability domain reference definitions'), which is more than a tautology. However, it does not differentiate from the near-identical sibling metadata_get_applicability_domain, leaving the agent to guess which to call.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no exclusions, and no mention of the closely related metadata_get_applicability_domain sibling. The agent gets no help choosing between this and its near-duplicate.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

opsin_convert_nameopsin_convert_nameC
Read-onlyIdempotent

Convert a systematic name using OPSIN

ParametersJSON Schema
NameRequiredDescriptionDefault
nameYesSystematic IUPAC name
output_formatYesDesired representation

Output Schema

ParametersJSON Schema
NameRequiredDescription
nameYes
valueYes
outputFormatYes

TDQS

C2.9/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, so the safety profile is covered structurally. The description adds nothing beyond that: it does not say what happens with unparseable names, whether the call is deterministic for ambiguous names, or any error behavior of the external OPSIN engine.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness3/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short sentence that is front-loaded and wastes no words, but it is terse to the point of under-specification rather than genuinely efficient communication. Acceptable but minimal.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return-value explanation is unnecessary, and the annotations cover the safety profile. However, for a conversion tool dependent on an external parser, the description omits any note on input validity or failure modes, leaving the definition only minimally complete.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, documenting 'name' as a systematic IUPAC name and 'output_format' with an enum of smiles/inchikey/inchi. The description adds no parameter-level meaning beyond the schema, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb and resource: converting a systematic (IUPAC) name, and names the underlying engine (OPSIN). An agent can tell it produces a structural representation from a name, though the description does not distinguish it from siblings like resolve_chemical_identifier or indigo_convert_molfile.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to choose this tool over resolve_chemical_identifier or indigo_convert_molfile, nor on prerequisites or valid input conditions. The agent must infer usage entirely from the name and schema.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

prioritize_risk_signalsprioritize_risk_signalsB
Read-onlyIdempotent

Build a caveated screening-priority summary from bioactivity AED, SEEM exposure, HTTK context, MMDB, and CPDat use signals

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidNoDSSTox substance identifier to prioritize.
identifierNoOptional non-DTXSID identifier to resolve before prioritization.
allow_fallbackNoWhether non-exact identifier fallback may be used after an exact search fails.
max_candidatesNoMaximum number of candidate records to return when identifier resolution is ambiguous.
identifier_typeNoOptional identifier category when `identifier` is supplied.

Output Schema

ParametersJSON Schema
NameRequiredDescription
chemicalRefYes
limitationsYes
hazardSignalYes
knownDataGapsYes
exposureSignalYes
prioritizationYes
provenanceSummaryYes
generatedFromToolsYes
identityResolutionNo

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is covered. The word 'caveated' hints that the output carries uncertainty qualifiers, which is genuine added context, but the description never says what those caveats are or how the priority is derived.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with the verb first and no filler. It is dense with domain acronyms (AED, SEEM, HTTK, MMDB, CPDat) that an agent may not resolve, but nothing is wasted.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return formatting need not be described. But this is a complex multi-source analytical tool, and the description says nothing about how priority is computed, what the caveats encode, or how to interpret the summary — gaps that matter for correct downstream use.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so all five parameters are already documented in the schema, including the anyOf requirement between dtxsid and identifier and the fallback/candidate semantics. The description adds no additional parameter meaning, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb ('Build') and resource ('screening-priority summary') and enumerates the source signals it draws on (AED, SEEM, HTTK, MMDB, CPDat), so the agent can tell what it produces. However, it does not distinguish itself from composite siblings like assemble_comptox_evidence_pack or build_pbpk_context_bundle, leaving the agent to infer the boundary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use, when-not-to-use, or prerequisite guidance. The agent cannot tell from the description when this aggregate tool should be chosen over the individual source tools (get_bioactivity_aed, get_seem_general, search_cpdat) or over assemble_comptox_evidence_pack.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

resolve_chemical_identifierresolve_chemical_identifierA
Read-onlyIdempotent

Resolve a chemical identifier deterministically without silently accepting ambiguous fuzzy matches

ParametersJSON Schema
NameRequiredDescriptionDefault
identifierYesChemical identifier to resolve
allow_fallbackNoWhether non-exact fallback searches may be used after an exact search fails
max_candidatesNoMaximum number of candidate records to return when ambiguous
identifier_typeNoOptional identifier category; inferred when omitted

Output Schema

ParametersJSON Schema
NameRequiredDescription
casrnYes
statusYes
warningsYes
inputTypeYes
candidatesYes
preferredNameYes
candidateCountYes
searchModeUsedYes
canonicalDtxsidYes
inputIdentifierYes

TDQS

A3.5/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already establish readOnly, idempotent, open-world, non-destructive semantics, so the safety profile is covered. The description contributes one real behavioral policy beyond that – ambiguous matches are not silently accepted, which ties to the allow_fallback parameter – but says nothing about what ambiguity yields (candidate list vs error) or how exact-match failure is surfaced.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler, and the determinism guarantee is stated up front. It is efficient, though the trailing clause is slightly awkward and could be split for clarity.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With a full schema, a rich annotation set, and an existing output schema, the description only needs to add purpose and behavioral policy, which it largely does. The remaining gap is the absence of guidance on when to prefer this tool over the many sibling chemical search/lookup tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so every parameter including allow_fallback, max_candidates, and identifier_type is already documented in the schema. The description's phrase about ambiguous fuzzy matches loosely mirrors allow_fallback but adds no syntax, defaults, or constraint detail beyond the schema, which is the expected baseline when the schema does the work.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('resolve a chemical identifier') and adds a scope qualifier ('deterministically ... without silently accepting ambiguous fuzzy matches'). It does not, however, distinguish itself from the many sibling search/get chemical tools such as search_chemical or batch_search_chemical, so an agent cannot confidently route between them from the text alone.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines3/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

Usage is implied rather than stated: the emphasis on deterministic, non-fuzzy resolution hints this is for exact identifier lookup, but no when-to-use condition, prerequisites, or named alternative (e.g. search_chemical, opsin_convert_name, batch_search_chemical) is given. An agent must infer the routing decision.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_bioactivity_termssearch_bioactivity_termsB
Read-onlyIdempotent

Search bioactivity terms by prefix, exact match, or substring

ParametersJSON Schema
NameRequiredDescriptionDefault
valueYesTerm to search for
search_typeYesSearch mode to use

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesBioactivity search-term results returned for exact, prefix, or substring lookups.

TDQS

B3.1/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint, and destructiveHint=false, covering the safety profile. The description adds no behavioral context beyond restating the search modes (which the enum already encodes) – nothing about result limits, pagination, or matching semantics.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with zero filler. It is appropriately sized for a two-parameter lookup tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present and rich annotations, return values and safety need no explanation. The remaining gap is routing: in a large sibling set of search and get_bioactivity_* tools, the description never says which situations select this one.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and the search_type enum is fully documented, so the schema carries the parameter burden. The description's 'prefix, exact match, or substring' phrasing loosely maps to the enum but adds no syntax or format detail beyond it.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search) and resource (bioactivity terms) plus the three match modes, so the operation is clear. However, it does nothing to distinguish this tool from the many sibling search_* tools (search_chemical, search_hazard, search_cpdat, etc.) or to clarify what a 'bioactivity term' actually is.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The description lists the available modes but gives no guidance on when to use this tool versus the sibling search tools or the get_bioactivity_* family, and no prerequisites or exclusions. Usage must be inferred entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_chemicalsearch_chemicalB
Read-onlyIdempotent

Search for chemicals by name, CAS-RN, or other identifiers

ParametersJSON Schema
NameRequiredDescriptionDefault
queryYesSearch term
search_typeNoSearch type: equals, starts-with, or containscontains

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesA list of chemicals matching the search criteria.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false and openWorldHint, so the safety and repeatability profile is covered by structured data. The description adds only the key types searchable and nothing about match behavior, result caps, or output shape, so it clears the lowered bar but adds little.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the key types come immediately. It is short but arguably under-informative rather than padded, so it earns 4 rather than a perfect score.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described, and the schema fully documents both inputs. What is missing is routing context against sibling search tools and any indication of result scope or limits, leaving the definition adequate but not complete for a two-parameter search entry point.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both parameters are documented in the schema, including the search_type enum values (equals, starts-with, contains) and the 'contains' default. The description's mention of 'CAS-RN, or other identifiers' loosely hints at valid query content but adds no syntax or matching detail beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (search) and resource (chemicals) and enumerates the searchable key types (name, CAS-RN, other identifiers), so an agent knows what it queries and how. It does not differentiate from close siblings like batch_search_chemical or resolve_chemical_identifier, which is what keeps it from a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No guidance on when to use this versus batch_search_chemical (bulk queries) or resolve_chemical_identifier (identifier normalization). There is no mention of prerequisites, result limits, or exclusions, so the agent must infer selection from tool names alone.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_cpdatsearch_cpdatB
Read-onlyIdempotent

Search historical CPDat data (functional use, product use categories, or list presence) for chemicals

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidNoOptional single DSSTox ID
dtxsidsNoOptional list of DSSTox IDs (max 200 per batch)
vocab_nameYesVocabulary domain to query: functional use (fc), product use categories (puc), or list presence keywords (lpk)

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesCPDat records returned for functional use, product use category, or list-presence searches.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive, so the safety profile is covered. The description adds only that the data is historical and enumerates the vocab domains – no notes on result volume, pagination, or how the required vocab_name affects return shape.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler. It is efficient, though the brevity is also what leaves usage guidance and sibling differentiation unaddressed.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be explained, and all three parameters are documented in the schema. What is missing is routing context against the many similarly named exposure tools, which the description never addresses.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100%, so the schema already documents dtxsid, dtxsids (max 200) and the vocab_name enum. The description's domain listing mirrors the enum description rather than adding syntax or behavioral detail, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description names a specific verb and resource ('Search historical CPDat data ... for chemicals') and enumerates the three domain types, so the agent knows what is returned. It stops short of distinguishing itself from siblings such as get_exposure_functional_use or get_cpdat_vocabulary.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not guidance is given. In a toolset crowded with overlapping exposure lookups (get_exposure_functional_use, search_exposures, list_exposure_functional_use_categories), the agent gets no signal about which one applies here.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_exposuressearch_exposuresB
Read-onlyIdempotent

Backwards-compatible exposure search across pathways/MMDB/SEEM datasets

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidNoOptional single DSSTox ID
dtxsidsNoOptional list of DSSTox IDs
data_typeYesLegacy exposure dataset selector

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.2/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, openWorldHint, idempotentHint, and destructiveHint=false, so the safety profile is fully covered by structured data. The description adds one behavioral nuance ('backwards-compatible', implying a legacy facade) but says nothing about result limits, pagination, or how multiple datasets are merged.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single, front-loaded sentence with no filler, and the resource and dataset scope appear immediately. It is efficient, though the terseness contributes to the guidance gaps noted elsewhere.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

With an output schema present, return values need no explanation, and annotations cover safety. However, for a search tool spanning three distinct datasets with four enum modes, the description leaves the agent without enough context on when to use it versus the many sibling alternatives, which is the main completeness gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, so the schema already documents dtxsid, dtxsids, and the data_type enum. The description's mention of pathways/MMDB/SEEM loosely corresponds to the enum values but adds no syntax, format, or interaction detail (e.g., single vs. list IDs) beyond the schema, so baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description pairs a specific verb ('search') with a specific resource ('exposure') and names the datasets it spans (pathways/MMDB/SEEM), which map to the data_type enum. It does not, however, explicitly distinguish itself from sibling tools like get_seem_general or get_exposure_mmdb_single_sample_by_dtxsid that cover the same datasets individually.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

The only usage signal is the phrase 'backwards-compatible', which implies a legacy wrapper, but the description never states when an agent should prefer this tool over the dataset-specific siblings (get_seem_general, get_exposure_mmdb_*, etc.) or what condition selects it. No when-to-use or when-not-to-use guidance is present.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_hazardsearch_hazardB
Read-onlyIdempotent

Search for hazard data by DTXSID across ToxValDB, ToxRefDB, cancer, genetox, ADME/IVIVE, IRIS, PPRTV, or HAWC datasets.

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidYesChemical identifier (DTXSID).
summaryNoWhether to request summary (vs. detailed) data when supported.
data_typeYesHazard dataset to query.

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesHazard dataset records returned for a single chemical lookup across ToxValDB, ToxRefDB, cancer, genetox, ADME/IVIVE, IRIS, PPRTV, or HAWC selectors.

TDQS

B3.3/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnly, idempotent, openWorld and non-destructive behavior, so safety is covered. The description adds the useful fact that it spans multiple named hazard sources, but says nothing about result scope, aggregation, or pagination beyond what the schema implies.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler; the verb and resource lead immediately followed by the scope-defining dataset list.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness3/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

Output schema exists so return values need no explanation, and all three params are documented. The gap is routing context: nothing explains how this multi-dataset search relates to the per-dataset sibling tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% with a documented enum for data_type, so the schema carries parameter meaning. The description's dataset list loosely maps to the data_type enum values but adds no syntax or semantic detail the schema lacks.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a specific verb (Search), resource (hazard data), key (DTXSID) and enumerates the datasets covered. This differentiates it from single-dataset siblings like get_hazard_toxval or get_hazard_iris, though it never explicitly says it aggregates across them.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use or when-not-to-use guidance. It does not tell the agent how to choose between this tool and the many per-dataset get_hazard_* tools or batch_search_hazard, leaving selection entirely to inference.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_httksearch_httkC
Read-onlyIdempotent

Search for high-throughput toxicokinetics (HTTK) data

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidNoOptional single DSSTox ID
dtxsidsNoOptional list of DSSTox IDs

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesHTTK records returned by the CompTox exposure search surface.

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, openWorldHint and destructiveHint=false, so the safety profile is fully covered structurally. The description adds nothing beyond the annotations - no note on result cardinality (single vs list), pagination, or behavior when neither filter is supplied.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single short, front-loaded sentence with no filler. It is efficient, though the brevity borders on under-specification rather than wasted words.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists, so return values need not be described. However, for a two-filter search endpoint with zero required parameters, the description never explains how the filters combine or what happens when both are omitted - a real gap for an agent deciding how to call it.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100% and both optional filters (dtxsid, dtxsids) are documented in the schema itself. The description adds no semantics beyond that, so the baseline 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

States a verb ('Search') and a domain ('high-throughput toxicokinetics (HTTK) data'), so the resource is identifiable, but 'data' is vague about what entity is being searched (chemical-level HTTK records, presumably). It offers no differentiation from siblings such as get_exposure_httk or batch_get_exposure_httk, which cover the same domain.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no when-to-use guidance, no indication of how this differs from the many other search_* tools, and no explanation of when to prefer it over get_exposure_httk. The agent is left to infer the niche entirely from the name.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

search_msreadysearch_msreadyB
Read-onlyIdempotent

Search for chemicals by MS-ready properties

ParametersJSON Schema
NameRequiredDescriptionDefault
queryNoSearch term for dtxcid or formula
mass_endNoEnd of mass range for mass-range search
mass_startNoStart of mass range for mass-range search
search_typeYesType of MS-ready search

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

B3.4/5.0
Behavior3/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint, idempotentHint, destructiveHint=false, and openWorldHint, so the safety profile is covered. The description adds no behavioral context beyond the basic search purpose and does not contradict the annotations.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness5/5

Is the description appropriately sized, front-loaded, and free of redundancy?

The description is a single, front-loaded sentence with no filler. Every word contributes to stating the tool's purpose.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness4/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema, complete parameter descriptions, and annotations carry most of the burden, so the description only needs to state the purpose clearly. It does so, though it omits any routing context relative to sibling search tools.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema description coverage is 100%, and the schema fully documents query, mass_start, mass_end, and the search_type enum. The description adds no additional parameter semantics, so the baseline of 3 applies.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose4/5

Does the description clearly state what the tool does and how it differs from similar tools?

The description states a clear verb ('Search') and resource ('chemicals') with a domain-specific qualifier ('MS-ready properties'). It does not explicitly differentiate itself from the sibling search_chemical or other search tools, so it falls short of a 5.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

There is no guidance on when to use this tool versus alternatives such as search_chemical or batch_search_chemical. No when-not conditions 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.

search_qsurssearch_qsursC
Read-onlyIdempotent

Retrieve QSUR model functional-use probability predictions

ParametersJSON Schema
NameRequiredDescriptionDefault
dtxsidNoOptional single DSSTox ID
dtxsidsNoOptional list of DSSTox IDs

Output Schema

ParametersJSON Schema
NameRequiredDescription
dataYesGeneric array schema used for MCP tools that return lists of records or scalar values.

TDQS

C2.6/5.0
Behavior2/5

Does the description disclose side effects, auth requirements, rate limits, or destructive behavior?

Annotations already declare readOnlyHint=true, idempotentHint=true and destructiveHint=false, so the safety profile is covered. The description adds nothing beyond repeating that it is a read/retrieval operation, saying nothing about prediction coverage, model versions, or what happens when no prediction exists for a chemical.

Agents need to know what a tool does to the world before calling it. Descriptions should go beyond structured annotations to explain consequences.

Conciseness4/5

Is the description appropriately sized, front-loaded, and free of redundancy?

A single front-loaded sentence with no filler. It is efficient, though its brevity tips into under-specification for a domain-jargon tool.

Shorter descriptions cost fewer tokens and are easier for agents to parse. Every sentence should earn its place.

Completeness2/5

Given the tool's complexity, does the description cover enough for an agent to succeed on first attempt?

An output schema exists so return values need no explanation, but the description still leaves 'QSUR' undefined and gives no routing guidance among the many related functional-use and search tools. For a search tool in this dense sibling cluster, that is a real gap.

Complex tools with many parameters or behaviors need more documentation. Simple tools need less. This dimension scales expectations accordingly.

Parameters3/5

Does the description clarify parameter syntax, constraints, interactions, or defaults beyond what the schema provides?

Schema coverage is 100% and both optional parameters (dtxsid, dtxsids) are fully documented in the schema. The description adds no format or filtering nuance, so this is the baseline 3 where the schema carries the load.

Input schemas describe structure but not intent. Descriptions should explain non-obvious parameter relationships and valid value ranges.

Purpose3/5

Does the description clearly state what the tool does and how it differs from similar tools?

The verb 'Retrieve' and resource 'QSUR model functional-use probability predictions' give a rough idea of the resource, but 'QSUR' is unexplained jargon and the description does nothing to distinguish it from close siblings like get_exposure_functional_use_probability or search_msready. An agent can guess it returns QSUR predictions but cannot tell why it exists alongside the other functional-use tools.

Agents choose between tools based on descriptions. A clear purpose with a specific verb and resource helps agents select the right tool.

Usage Guidelines2/5

Does the description explain when to use this tool, when not to, or what alternatives exist?

No when-to-use guidance, no prerequisites, and no mention of alternatives. Given the crowded sibling set of search_* and functional-use tools, the agent is left to infer when this one applies versus get_exposure_functional_use or search_msready.

Agents often have multiple tools that could apply. Explicit usage guidance like "use X instead of Y when Z" prevents misuse.

Tool Schema Changelog

Recent tool additions, removals, and schema changes observed during successful MCP inspections.

  1. 85 tool updatesv0.3.0
    • First observedassemble_comptox_evidence_pack
    • First observedbatch_get_bioactivity_aed
    • First observedbatch_get_bioactivity_assay_annotations
    • First observedbatch_get_bioactivity_data
    • First observedbatch_get_chemical_details
    • First observedbatch_get_exposure_functional_use
    • First observedbatch_get_exposure_httk
    • First observedbatch_get_exposure_list_presence
    • First observedbatch_get_exposure_product_data
    • First observedbatch_get_hazard_cancer_summary
    • First observedbatch_get_hazard_genetox_details
    • First observedbatch_get_hazard_genetox_summary
    • First observedbatch_get_hazard_skin_eye
    • First observedbatch_get_hazard_toxref
    • First observedbatch_get_hazard_toxval
    • First observedbatch_get_seem_demographic
    • First observedbatch_get_seem_general
    • First observedbatch_search_chemical
    • First observedbatch_search_hazard
    • First observedbuild_aop_linkage_summary
    • First observedbuild_pbpk_context_bundle
    • First observedget_bioactivity_aed
    • First observedget_bioactivity_analytical_qc
    • First observedget_bioactivity_aop
    • First observedget_bioactivity_assay
    • First observedget_bioactivity_assay_chemicals
    • First observedget_bioactivity_assay_count
    • First observedget_bioactivity_data
    • First observedget_bioactivity_summary_by_aeid
    • First observedget_bioactivity_summary_by_dtxsid
    • First observedget_bioactivity_summary_by_tissue
    • First observedget_chemical_details
    • First observedget_chemical_extra_data
    • First observedget_chemical_fate_details
    • First observedget_chemical_fate_summary
    • First observedget_contract_manifest
    • First observedget_cpdat_vocabulary
    • First observedget_exposure_ccd_chem_weight_fractions
    • First observedget_exposure_ccd_functional_use
    • First observedget_exposure_ccd_keywords
    • First observedget_exposure_ccd_monitoring_data
    • First observedget_exposure_ccd_production_volume
    • First observedget_exposure_ccd_puc
    • First observedget_exposure_functional_use
    • First observedget_exposure_functional_use_probability
    • First observedget_exposure_httk
    • First observedget_exposure_list_presence
    • First observedget_exposure_mmdb_aggregate_by_dtxsid
    • First observedget_exposure_mmdb_aggregate_by_medium
    • First observedget_exposure_mmdb_single_sample_by_dtxsid
    • First observedget_exposure_mmdb_single_sample_by_medium
    • First observedget_exposure_product_data
    • First observedget_full_list
    • First observedget_hazard_adme_ivive
    • First observedget_hazard_cancer_summary
    • First observedget_hazard_genetox_details
    • First observedget_hazard_genetox_summary
    • First observedget_hazard_hawc
    • First observedget_hazard_iris
    • First observedget_hazard_pprtv
    • First observedget_hazard_skin_eye
    • First observedget_hazard_toxref
    • First observedget_hazard_toxval
    • First observedget_public_list_names
    • First observedget_seem_demographic
    • First observedget_seem_general
    • First observedindigo_convert_molfile
    • First observedlist_exposure_functional_use_categories
    • First observedlist_exposure_list_presence_tags
    • First observedlist_exposure_mmdb_mediums
    • First observedlist_exposure_product_puc
    • First observedmetadata_get_applicability_domain
    • First observedmetadata_get_model_card
    • First observedmetadata_list_applicability_domain
    • First observedopsin_convert_name
    • First observedprioritize_risk_signals
    • First observedresolve_chemical_identifier
    • First observedsearch_bioactivity_terms
    • First observedsearch_chemical
    • First observedsearch_cpdat
    • First observedsearch_exposures
    • First observedsearch_hazard
    • First observedsearch_httk
    • First observedsearch_msready
    • First observedsearch_qsurs

TDQS

C2.7/5.0

Scored across 85 tools

Disambiguation2/5

Several tools target the same underlying resource with only subtle differences, such as search_httk vs get_exposure_httk, search_qsurs vs get_exposure_functional_use_probability, and search_exposures vs the many specific get_exposure_* tools. Batch variants are clearly labeled, but these overlapping exposure, HTTK, and functional-use endpoints make misselection likely.

Naming Consistency4/5

All names use snake_case and most follow a predictable verb_noun pattern with domain prefixes (get_bioactivity_*, get_hazard_*, get_exposure_*). Minor deviations exist, like metadata_get_model_card and opsin_convert_name where the domain/service prefix precedes the verb.

Tool Count1/5

85 tools is far beyond the 3-15 range for a well-scoped server and exceeds even a generous ceiling for a broad public-data API. Many batch and dataset-specific variants inflate the count, making the surface extremely heavy.

Completeness5/5

The surface covers chemical identity, bioactivity, exposure, hazard, metadata, public lists, and cross-domain aggregation workflows, with search/get/batch/list operations for most resources. No obvious gaps for the read-only CompTox domain.

Maintenance

ActivityMaintained
ResponsivenessNo issues

Related MCP Connectors

Related MCP Servers

  • A
    license
    Not graded
    quality
    D
    maintenance
    Provides chemical informatics endpoints for converting between chemical names and SMILES, processing molecule structures, and comparing molecules, with MCP compatibility.
    5
    MIT
  • A
    license
    A
    quality
    A
    maintenance
    An MCP server that gives AI assistants access to biological and biomedical RDF databases via SPARQL at the RDF Portal, as well as selected REST APIs (NCBI E-utilities, UniProt, ChEMBL, PDB, Reactome, Rhea, MeSH, and more).
    29
    18
    MIT
  • A
    license
    Not graded
    quality
    A
    maintenance
    Access EPA environmental data — facility compliance (ECHO), toxic releases (TRI), Superfund sites, drinking water systems, environmental justice screening (EJScreen), and real-time air quality (AirNow) via MCP.
    201 npm
    1
    Apache 2.0
  • F
    license
    Not graded
    quality
    D
    maintenance
    Provides oncology data (research, news, FDA approvals, clinical trials) and IBM MAMMAL biomedical predictions (PPI, DTI, ClinTox) as MCP tools. Allows AI agents to query cancer datasets and run predictions through a remote MCP server.
    -