AGI-style scientific drug discovery agent with MCP-based fact checking and recommendations
This server has critical gaps across naming, descriptions, schemas, and error handling. Both tools have minimal parameter descriptions and no documented output schemas. Tool names lack action verbs. The implementation appears to be a thin wrapper around placeholder functions that return mock data rather than actual integration with drug discovery APIs or scientific databases. Tool definitions are inferred from function calls in agent/main_agent.py rather than explicitly registered with full MCP metadata. Output is completely undocumented, no structured schema for return values. Error handling is absent; placeholder functions always return success with fake data.
MCP Tool: Scientific Drug Fact Checker
MCP Tool: Clinical Recommendation Engine
Tool names do not start with action verbs. 'drug_fact_checker' and 'safety_recommendation' are noun-based; should be 'verify_drug_facts' and 'get_safety_recommendations' to signal what the LLM should expect the tool to do.
Parameter descriptions are minimal. Both tools accept only a single 'drug_query' string parameter with description 'The drug query to fact-check' and 'The drug query to provide safety recommendations for'. No guidance on format, length constraints, example values, or what constitutes a valid drug query. LLMs cannot infer whether this accepts drug names, SMILES strings, generic names, or brand names.
No output schemas documented for either tool. Callers must reverse-engineer the response structure from the mock return values in mcp/drug_fact_checker.py and mcp/safety_recommender.py. Both tools return dicts with undocumented fields (drug_fact_checker: source, verified, mechanism, approved_use, confidence_score; safety_recommendation: recommended_dosage, warnings, population_notes). LLMs cannot plan downstream operations without knowing what fields to expect.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 23 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 23 | - | v1 |
Tools return hardcoded mock data regardless of input. drug_fact_checker always returns the same response for any drug_query; safety_recommender always returns generic boilerplate. These are not functional tools, they are placeholders. No integration with actual FDA, PubChem, clinical databases, or any real data source.
No error handling or validation. Both tool functions accept any string and return success. No checks for invalid drug names, missing data, rate limits, or API failures. Error responses must guide LLM recovery; here, there is no error path at all.
Tool definitions are inferred from Python function calls in agent/main_agent.py rather than explicitly registered with the MCP server. There is no visible MCP server implementation (no SSE handlers, HTTP routes, or tool registration code). The codebase shows a FastAPI wrapper (api_server.py) but no MCP protocol handlers. This suggests the tools are not actually exposed as MCP tools.
Parameter type definitions are present in the schema (drug_query: string) but lack format constraints. No enum of valid drug identifiers, no regex patterns, no length limits. LLMs will pass arbitrary strings and may hallucinate pharmaceutical identifiers.