Deterministic safety tools for Copilot agent mode — drug-drug interaction checking, FDA label lookup, clinical red flag detection, and synthetic patient data management.
CareBridge defines 4 tools with clear, domain-specific names (check_interactions, lookup_drug_label, detect_red_flags, get_synthetic_patient) and good descriptions (100-150 chars each). All tools have input schemas with type definitions and parameter descriptions. However, output schemas are not documented, responses are JSON-stringified but the structure is not formally declared. Parameter descriptions are adequate but lack constraint details (e.g., no enum for drug names, no format guidance). Error handling is present but minimal, errors return isError=true with JSON text, not actionable recovery guidance. No tool annotations (readOnlyHint, idempotentHint) despite all being read-only deterministic operations.
Check drug-drug interactions via bundled DDInter lookup. Severity is deterministic — never LLM.
Detect clinical red flags from narrative text via curated deterministic rules. Never LLM.
Load a Synthea-style synthetic patient fixture. Never use real patient data.
Fetch FDA drug label interaction text from openFDA (live + 24h cache). Label text only — severity from DDInter.
Output schemas not documented. Tools return JSON-stringified objects (medications, interactions, redFlags, patient) but the structure is not formally declared. LLMs cannot plan downstream operations or extract fields reliably.
lookup_drug_label has ambiguous parameter design: 'drug', 'drugs', and 'co_drugs' are all optional with unclear mutual exclusivity. Description says 'Provide drug or drugs' but does not specify which combinations are valid or what happens if all are omitted.
Error responses lack recovery guidance. When a synthetic patient is not found, the error returns available options but does not suggest 'Try get_synthetic_patient with id from the available list.' LLMs need explicit next-step guidance.
| Scored | Grade | Overall | Spec posture | Rubric |
|---|---|---|---|---|
| 2026-09-23 | D | 59 | 2026-07-28+ | v2 |
No tool annotations despite all tools being read-only and deterministic. Adding readOnlyHint=true and idempotentHint=true would signal to agents that these tools are safe to call repeatedly without side effects.
Parameter descriptions lack constraint details. 'Medication names (e.g. warfarin, ibuprofen)' uses examples instead of formal constraints. Should specify: case-insensitive, normalized internally, or provide an enum of supported drugs.