Multi-agent hospital assistant using Agent Communication Protocol (ACP). Provides doctor finding, health-policy QA, and agent chaining capabilities with MCP integration.
This MCP server has significant quality gaps. Only 2 tools are defined. Tool naming follows verb conventions ('list_', 'search_'), which is good. However, descriptions are extremely sparse, list_doctors is 43 chars, insurance_pdf_search is 73 chars. Parameter descriptions exist but are minimal. Critical gap: NO input schemas are explicitly visible in the source code. The server registers tools via FastMCP decorators (@mcp.tool()) but does not expose JSON Schema definitions for parameters. Input parameter 'state' and 'query' lack type annotations in the decorator signature, and no schema documentation is provided. Output schemas are not documented. Error handling is absent, no validation, no recovery guidance. The server makes a raw HTTP call to fetch doctors.json without timeout, error classification, or actionable error messages. The insurance tool delegates to LangChain RAG without documenting how the RAG pipeline works or what failures look like. Overall, this server reads as a prototype, not production-grade tooling.
Search the Gold Hospital insurance policy PDF and return relevant answers.
This tool returns doctors that may be near you.
No input schemas defined or visible. FastMCP decorators lack JSON Schema annotations for parameters. Cannot verify parameter types, required fields, enums, or constraints. LLMs will infer behavior from descriptions alone.
Descriptions are too sparse. 'This tool returns doctors that may be near you.' (43 chars) lacks WHEN to use, WHAT it returns, or prerequisites. 'Search the Gold Hospital insurance policy PDF...' (73 chars) does not explain pagination, result limits, or confidence scoring. Baseline: A+ tools average 194 chars with WHAT/WHEN/WHY.
No output schemas documented. list_doctors returns 'str: a list of doctors...' (raw string, not structured). insurance_pdf_search returns search results from LangChain RAG with no schema specification. LLMs cannot plan downstream tool calls or extract required fields (e.g. doctor_id, specialty, confidence).
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-22 | F | 33 | 2026-07-28+ | v2 |
| 2026-03-09 | F | 29 | - | v1 |
No error handling or recovery guidance. list_doctors makes an unguarded HTTP request to a GitHub-hosted JSON file (no timeout, no retryable classification). If the file is unavailable, the agent receives a raw exception. insurance_pdf_search delegates to LangChain without documenting failure modes or how an LLM should recover.
Parameter 'state' in list_doctors accepts free-form strings with minimal guidance. Should declare as an enum (all 50 US state codes). Baseline: 94% of A+ tools use enums for constrained inputs. Currently, LLMs may pass invalid values like 'California' or 'USA'.
Output not paginated or limited. list_doctors returns all matching doctors without pagination, offset, or limit. Large result sets (e.g. all doctors in California) could blow context windows. Baseline: paginated tools accept page/offset + limit and return a total count.
Composition weakness: list_doctors returns raw JSON strings ('str(matches)'), not structured objects. Requires LLM to parse JSON from a string, introducing parsing errors. Should return typed dictionaries or explicit JSON.