This server provides data and functions relating to toxicological and chemical attribute data for over one million chemicals studied by the EPA.
ToxPipeMCP defines 9 tools with reasonable structure but exhibits inconsistent quality. All tools have descriptions and input schemas with proper types and constraints (minLength, maxLength). Naming follows verb_noun conventions appropriately (literature_search, rag_search, is_valid_smiles, smiles_to_mol_weight, etc.). However, parameter descriptions are minimal and lack actionable context for LLM selection. Most tools accept free-form string inputs without enum constraints where applicable (e.g., ctd_chemical_to_genes accepts species as a free-form string despite documentation stating 'Must be exactly one of: Homo sapiens, Mus musculus, Rattus norvegicus', this constraint is in the description but not enforced in the schema). Output schemas are not documented in the tool definitions, the source code shows tools exist but does not reveal what fields they return, forcing an LLM to guess. Error handling is absent from visible code. All tools are READ_ONLY (good security posture), but there is no tool annotation metadata to signal this to clients. Parameter descriptions exist but are terse (10-40 chars) and lack dependency hints or recovery guidance.
Given a chemical's CASRN, return its preferred name.
Given the name of a chemical, return that chemical's associated diseases with direct evidence (i.e., from a marker) from the Comparative Toxicogenomics database (CTD).
Given the name of a chemical and a species, return that chemical's associated gene interactions from the Comparative Toxicogenomics database (CTD). This tool returns a list of strings, where each string is an interaction for the given chemical in the specified species passed to the tool.
Given a SMILES string, return whether or not it is a valid SMILES representation.
Given a query, return relevant academic and scientific papers from PubMed. Use this tool if the user requests a literature search.
Output schemas not documented. Tools are defined but their return types are invisible in the provided code. LLMs cannot infer what fields to extract from responses, forcing them to guess or hallucinate output structure. This violates the pattern:tool-schema requirement and breaks tool chaining.
Enum constraints not enforced in schema. ctd_chemical_to_genes accepts 'species' as a free-form string, but the description states 'Must be exactly one of: Homo sapiens, Mus musculus, Rattus norvegicus'. The schema should declare this as an enum, not rely on description text. LLMs cannot parse natural language constraints reliably.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | B | 70 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 42 | - | v1 |
Given the name of a chemical, return its canonical SMILES representation.
Given a query, return relevant toxicological information from publications from the National Toxicology Program (NTP) at https://ntp.niehs.nih.gov/publications. These reports are retrieved via retrieval-augmented generation (RAG). The publications include chemical, toxicity, and technical reports. This tool should be used if the user requests a literature search or a RAG search.
Given a SMILES string, return the average molecular weight in g/mol of the chemical.
Given a chemical's SMILES representation, return its preferred name. If an exact mapping could not be found, the most structurally similar chemical's name is returned instead.
Parameter descriptions are terse (10 - 40 characters) and lack actionable context. Descriptions like 'Query to perform a PubMed literature search on' and 'SMILES string representing a chemical's structure' meet minimum length but do not explain WHEN to use the tool, WHAT to do if it fails, or how the result chains to other tools.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint). All tools are marked READ_ONLY in the metadata but no annotation metadata is visible in the schema. Clients cannot determine tool safety without this explicit annotation.
No error handling or recovery guidance in visible code. Tools lack explicit error classification (retryable vs user-fixable vs fatal) and recovery suggestions. E.g., if ctd_chemical_to_genes receives an invalid species, the agent has no guidance on what to do next.