Comptox MCP Server
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| LOG_LEVEL | No | Application log level. | INFO |
| BYPASS_AUTH | No | Set to 1 to disable auth (development only). | 0 |
| CTX_API_KEY | No | CompTox API key used for all downstream requests. | |
| ENVIRONMENT | No | Controls defaults like permissive CORS. | development |
| CTX_RETRY_BASE | No | Base sleep (seconds) used in exponential backoff. | 0.5 |
| CTX_USE_LEGACY | No | Set to 1 to use the legacy https://api-ccte.epa.gov endpoint. | 0 |
| CTX_API_BASE_URL | No | Base URL for CompTox API. | https://comptox.epa.gov/ctx-api |
| CORS_ALLOW_ORIGINS | No | Comma-separated origins for HTTP transport. Defaults to * in development. | |
| CTX_RETRY_ATTEMPTS | No | Number of retry attempts for transient errors. | 3 |
| EPA_COMPTOX_API_KEY | No | Fallback CompTox API key if CTX_API_KEY is not set. | |
| EPACOMP_MCP_METRICS_ENABLED | No | Toggle /metrics endpoint exposure. | 1 |
| EPACOMP_MCP_HANDSHAKE_TIMEOUT_SECONDS | No | Minimum handshake timeout negotiated with WebSocket clients. | 30 |
| EPACOMP_MCP_HEARTBEAT_TIMEOUT_SECONDS | No | Minimum heartbeat timeout negotiated with WebSocket clients. | 120 |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_chemicalB | Search for chemicals by name, CAS-RN, or other identifiers |
| batch_search_chemicalC | Batch search for chemicals using a list of identifiers |
| resolve_chemical_identifierA | Resolve a chemical identifier deterministically without silently accepting ambiguous fuzzy matches |
| get_chemical_detailsC | Get detailed information about a chemical |
| batch_get_chemical_detailsC | Get detailed information about multiple chemicals |
| search_msreadyB | Search for chemicals by MS-ready properties |
| get_chemical_fate_summaryB | Retrieve environmental fate summary for a chemical |
| get_chemical_fate_detailsB | Retrieve detailed environmental fate data for a chemical |
| get_chemical_extra_dataC | Fetch extra chemical data (functional use, use cases, etc.) |
| opsin_convert_nameC | Convert a systematic name using OPSIN |
| indigo_convert_molfileC | Convert a molfile using Indigo toolkit endpoints |
| search_bioactivity_termsB | Search bioactivity terms by prefix, exact match, or substring |
| get_bioactivity_summary_by_dtxsidC | Fetch bioactivity summary data for a chemical |
| get_bioactivity_summary_by_aeidC | Fetch bioactivity summary data for an assay endpoint ID (AEID) |
| get_bioactivity_summary_by_tissueC | Fetch bioactivity summary data for a chemical in a specific tissue |
| get_bioactivity_dataB | Retrieve detailed bioactivity data for a single identifier |
| batch_get_bioactivity_dataB | Batch fetch bioactivity data for multiple identifiers |
| get_bioactivity_aedC | Retrieve Activity Exposure Distribution (AED) data for a chemical |
| batch_get_bioactivity_aedC | Batch retrieve AED data for multiple chemicals |
| get_bioactivity_assayB | Retrieve assay annotations or lists (by AEID, gene, single-concentration, or all) |
| batch_get_bioactivity_assay_annotationsC | Batch retrieve assay annotations for AEIDs |
| get_bioactivity_assay_countA | Return the total count of available assays |
| get_bioactivity_assay_chemicalsC | Get chemicals associated with an assay endpoint |
| get_bioactivity_aopC | Retrieve adverse outcome pathway mappings |
| get_bioactivity_analytical_qcB | Retrieve analytical QC data for a chemical |
| search_cpdatB | Search historical CPDat data (functional use, product use categories, or list presence) for chemicals |
| search_httkC | Search for high-throughput toxicokinetics (HTTK) data |
| get_cpdat_vocabularyB | Return CPDat controlled vocabulary values (functional use, product use categories, or list presence tags) |
| search_qsursC | Retrieve QSUR model functional-use probability predictions |
| search_exposuresB | Backwards-compatible exposure search across pathways/MMDB/SEEM datasets |
| get_seem_generalC | Fetch SEEM general exposure predictions |
| batch_get_seem_generalB | Batch fetch SEEM general exposure predictions |
| get_seem_demographicC | Fetch SEEM demographic exposure predictions |
| batch_get_seem_demographicB | Batch fetch SEEM demographic exposure predictions |
| get_exposure_product_dataC | Retrieve CPDat product data |
| batch_get_exposure_product_dataC | Batch fetch CPDat product data |
| list_exposure_product_pucC | List product use categories (PUC) |
| get_exposure_list_presenceC | Retrieve list presence data |
| batch_get_exposure_list_presenceC | Batch fetch list presence data |
| list_exposure_list_presence_tagsC | List list-presence tags |
| get_exposure_httkC | Retrieve HTTK data |
| batch_get_exposure_httkC | Batch fetch HTTK data |
| get_exposure_functional_useC | Retrieve reported functional use data |
| batch_get_exposure_functional_useC | Batch fetch reported functional use data |
| get_exposure_functional_use_probabilityB | Retrieve functional use probability predictions |
| list_exposure_functional_use_categoriesB | List functional use categories |
| get_exposure_ccd_pucC | Retrieve CCD Product Use Category data |
| get_exposure_ccd_production_volumeC | Retrieve CCD production volume data |
| get_exposure_ccd_monitoring_dataC | Retrieve CCD biomonitoring data |
| get_exposure_ccd_keywordsC | Retrieve CCD general use keywords |
| get_exposure_ccd_functional_useC | Retrieve CCD reported functional use data |
| get_exposure_ccd_chem_weight_fractionsC | Retrieve CCD chemical weight fractions data |
| get_exposure_mmdb_single_sample_by_mediumB | Retrieve MMDB single-sample data filtered by medium |
| get_exposure_mmdb_single_sample_by_dtxsidC | Retrieve MMDB single-sample data |
| list_exposure_mmdb_mediumsC | List MMDB medium categories |
| get_exposure_mmdb_aggregate_by_mediumC | Retrieve MMDB aggregate records filtered by medium |
| get_exposure_mmdb_aggregate_by_dtxsidC | Retrieve MMDB aggregate records |
| search_hazardB | Search for hazard data by DTXSID across ToxValDB, ToxRefDB, cancer, genetox, ADME/IVIVE, IRIS, PPRTV, or HAWC datasets. |
| batch_search_hazardC | Batch hazard lookup for multiple DTXSIDs for the selected dataset. |
| get_hazard_toxvalB | Retrieve full ToxValDB hazard data for a single chemical. |
| batch_get_hazard_toxvalC | Retrieve ToxValDB hazard data for multiple chemicals. |
| get_hazard_skin_eyeC | Retrieve skin and eye hazard data for a single chemical. |
| batch_get_hazard_skin_eyeA | Retrieve skin and eye hazard data for multiple chemicals. |
| get_hazard_cancer_summaryB | Retrieve cancer hazard summary for a single chemical. |
| batch_get_hazard_cancer_summaryB | Retrieve cancer hazard summary for multiple chemicals. |
| get_hazard_genetox_summaryC | Retrieve genotoxicity summary data for a chemical. |
| batch_get_hazard_genetox_summaryC | Retrieve genotoxicity summary data for multiple chemicals. |
| get_hazard_genetox_detailsC | Retrieve genotoxicity detailed data for a chemical. |
| batch_get_hazard_genetox_detailsC | Retrieve genotoxicity detailed data for multiple chemicals. |
| get_hazard_adme_iviveC | Retrieve ADME/IVIVE hazard data for a chemical. |
| get_hazard_pprtvC | Retrieve PPRTV hazard data for a chemical. |
| get_hazard_irisC | Retrieve IRIS hazard data for a chemical. |
| get_hazard_hawcB | Retrieve HAWC link mapper data for a chemical. |
| get_hazard_toxrefB | Retrieve ToxRefDB data (summary, data, effects, or observations) by DTXSID, study ID, or study type. |
| batch_get_hazard_toxrefB | Batch retrieve ToxRefDB data by DTXSID. |
| get_public_list_namesB | Get names of available public chemical lists |
| get_full_listB | Get all chemicals in a specific list |
| metadata_get_model_cardC | Retrieve CompTox model cards with optional filters and pagination |
| metadata_list_applicability_domainC | List applicability domain reference definitions |
| metadata_get_applicability_domainC | Fetch applicability domain configuration for a specific model |
| assemble_comptox_evidence_packC | Assemble a portable CompTox evidence pack combining identity, hazard, exposure, bioactivity, AOP linkage, and PBPK context slices. |
| build_aop_linkage_summaryC | Build a CompTox-side AOP linkage summary from bioactivity assay and AOP crosswalk data. |
| build_pbpk_context_bundleB | Build a CompTox-side PBPK context bundle from HTTK, ADME/IVIVE, exposure hints, and model-card references. |
| prioritize_risk_signalsB | Build a caveated screening-priority summary from bioactivity AED, SEEM exposure, HTTK context, MMDB, and CPDat use signals |
| get_contract_manifestB | Return a machine-readable inventory of the live public resources, tools, MCP response schemas, portable schemas, and suite boundary notes |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
| chemical | Access to chemical structures, nomenclature, IDs, and properties |
| bioactivity | Access to ToxCast/Tox21 bioactivity data, assays, models, and AOP crosswalks |
| exposure | Access to SEEM predictions, CPDat product data, HTTK, MMDB monitoring, and CCD datasets |
| hazard | Access to hazard datasets from the CTX APIs, including ToxValDB, ToxRefDB, cancer, genetox, ADME/IVIVE, IRIS, PPRTV, and HAWC link mappers. |
| chemical_list | Access to chemical lists and collections |
| cheminformatics | Access to ToxPrint chemotypes and other cheminformatics tools |
| metadata | Model cards, applicability domain definitions, and provenance metadata |
| interop | Cross-suite evidence packaging and handoff builders for AOP and PBPK consumers |
| prioritization | Screening-style risk prioritization summaries combining AED, exposure, and use signals |
| manifest | Machine-readable public contract manifest for resources, tools, schemas, and boundary notes |
TDQS
Scored across 85 tools
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.
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.
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.
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.