MedifinderMCP has basic tool structure but significant quality gaps. All 8 tools have descriptions and most have input schemas, but descriptions are generic (avg ~60 chars, well below the 194-char baseline). Parameter descriptions are sparse or missing entirely. No output schemas documented. Error handling returns generic database errors without recovery guidance. Tools like search_medicines and get_medicine_locations have reasonable parameter typing, but get_regional_statistics and get_medicine_status have empty input schemas. The create_database_schema tool is a write operation but lacks confirmation/dry-run patterns. No tool annotations (readOnlyHint/destructiveHint) present despite clear risk classifications.
Tool to create all database tables based on the SQLAlchemy models.
Tool to diagnose the database connection and content.
Get locations where a medicine is available.
Get overall medicine statistics.
Get stock information for a specific medicine.
Get medicine statistics by region.
Search for medicines in the database.
No output schemas documented for any tool. LLMs cannot predict response structure or plan downstream calls. search_medicines returns {query, search_type, count, results} but this is inferred from code, not declared in tool metadata.
Four tools (get_regional_statistics, get_medicine_status, diagnose_database, troubleshoot_connection) have empty input schemas ({}).
Generic error handling. All tools return {error: 'Database error: ...'} without recovery guidance. Per pattern:recovery-guide, errors must tell LLM what to do next (e.g., 'Try search_medicines() with a partial name').
Inferred effective spec: <=2025-11-25.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | F | 48 | <=2025-11-25 | v2 |
Tool to troubleshoot database connection issues.
create_database_schema is a destructive write operation but lacks confirmation/dry-run pattern. No idempotent or confirmation-request mechanism. Agents could accidentally recreate schema without safeguards.
No tool annotations (readOnlyHint, destructiveHint, idempotentHint) despite clear risk classifications in metadata. LLMs cannot distinguish safe reads from dangerous writes without explicit hints.