A sovereign, local-first MCP server for High-Throughput Screening (HTS) assay calculations across Sub-Cellular, Cellular, Tissue, and Organism biological segments.
Server defines 6 bioassay calculation tools with complete input schemas and descriptions. All tools follow verb_noun naming (calculate_*, analyze_*). Descriptions are domain-specific and adequate (100-200 chars). However, output schemas are returned as JSON strings rather than documented in the tool definition, limiting LLM ability to plan downstream operations. Parameters lack enum constraints for categorical inputs (assay_type, readout_type, target_protein, biological_segment), inviting hallucinated values. Error handling is minimal, most tools return JSON error objects but lack recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite all being read-only operations. Parameter descriptions are present but generic; none explain valid value ranges or dependencies.
HICA Engine: High-sensitivity fluorescence analysis for ultra-low abundance cytokine and receptor proteins (IL-2R, IL-8, IL-12p70).
UA-Glo Engine: Processes luminescent signals (RLU) for Cell Viability (2D/3D), Caspase 3/7 Apoptosis, Kinase activity, and Reporter Gene (NF-kB/Wnt) assays.
Organism Engine: Computes in vivo animal dosing, C_max, Area Under Curve (AUC), and plasma concentration decay across whole-organism model systems.
Tissue & Organoid Engine: Evaluates drug molecule penetration depth, barrier permeability, and core viability in 3D spheroid/organoid tissue models.
TR-FRET Engine: Calculates 665nm/620nm emission ratios for target engagement assays including PROTAC (BRD4/CRBN, DDB1-CRBN&GSPT1), KRAS (WT/mutant G12C), and cAMP.
OneStep ELISA Engine: Calculates concentration for rapid 1-hour 96-well assays including Cytokines (IL-2, IL-6, IFN-g), Immunoglobulins (IgG), and Hormones (TSH).
Output schemas not documented in tool definitions. Tools return JSON strings with fields like 'status', 'biological_segment', 'htrf_ratio', but LLM cannot see expected structure before calling. Prevents downstream tool chaining and forces LLM to parse unstructured output.
Categorical parameters lack enum constraints. 'assay_type' (PROTAC_BRD4_CRBN, KRAS_G12C_cRAF, CAMP_DETECTION, TNF_TNFR), 'readout_type' (CELL_VIABILITY_3D, CASPASE_3_7, KINASE_ACTIVITY, REPORTER_GENE), 'target_protein' (IL-2R, IL-8, IL-12P70), and 'biological_segment' (SUB_CELLULAR, CELLULAR, TISSUE, ORGANISM) are free-form strings. LLMs will hallucinate invalid values; no validation prevents 'PROTAC_BRD5' or 'CELL_VIABILITY_4D'.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | C | 60 | 2026-07-28+ | v2 |
Error messages lack recovery guidance. Tools return {'status': 'ERROR', 'message': '...'} but do not tell LLM what to do next. E.g., 'Control RLU must be greater than zero' does not suggest retrying with valid input or checking data source.
No tool annotations despite all tools being read-only. FastMCP supports readOnlyHint annotation; all 6 tools should declare this to signal to LLM that they are safe to call without side effects.
Parameter descriptions are generic and lack actionable constraints. E.g., 'slope' and 'intercept' in quantify_onestep_elisa lack units, typical ranges, or guidance on how to obtain them. 'diffusion_coefficient' in calculate_tissue_organoid_penetration lacks units (cm²/s stated in description but not in schema).