The ADMETlab MCP server has 4 well-defined tools with consistent naming (verb_noun pattern: wash_, render_, predict_, fetch_), clear descriptions (90-160 chars), and complete JSON schemas with typed parameters. However, parameter descriptions are sparse or missing, output schemas are undocumented, and error handling lacks recovery guidance. Tool composition is sound (each does one thing), but the server does not match production-grade definition quality due to incomplete parameter documentation and missing output specifications.
Fetch CSV results for an ADMET task via /api/admetCSV using taskId.
Predict ADMET properties via /api/single/admet, one upstream request per SMILES. The upstream prediction service may be temporarily unavailable.
Render molecule SVG via /api/molsvg.
Standardize molecules via /api/washmol. Input SMILES string or list.
Parameter descriptions are missing or incomplete. The 'figsize' parameter in render_molecule_svg lacks a description explaining the expected format (array of 2 integers for width/height). The 'feature' and 'uncertain' parameters in predict_admet lack descriptions of their semantic meaning and default behavior.
Output schemas are not documented. Tool descriptions do not specify the structure of returned data (e.g., what fields wash_molecule returns, what the CSV response structure is for fetch_admet_csv). LLMs cannot plan downstream actions without knowing return types.
Error handling and recovery guidance is absent. Tool descriptions do not explain what errors might occur (e.g., 'upstream prediction service may be temporarily unavailable' is mentioned for predict_admet but no recovery action is specified). No guidance on retryability or user-correctable errors.
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | C | 65 | <=2025-11-25 | v2 |
| 2026-03-09 | F | 45 | 2024-11-05+ | v1 |
The 'uncertain' parameter in predict_admet is explicitly marked as 'Deprecated compatibility input' and is ignored by the API. This deprecated parameter should be removed entirely to avoid confusing LLMs into passing unused fields.
Tool descriptions lack clarity on when to use each tool. 'wash_molecule' vs 'predict_admet' semantic difference is not explained, should an LLM call wash first, predict first, both? No dependency hints provided.