MedBridge
Server Configuration
Describes the environment variables required to run the server.
| Name | Required | Description | Default |
|---|---|---|---|
| OPENFDA_API_KEY | No | Optional API key for openFDA to raise rate limits. All tools work without it. |
Instructions
Guidance the server publishes about itself, which clients place ahead of the tool catalog so the model reads it before choosing anything.
This server publishes no instructions, or was last inspected before Glama recorded them.
Capabilities
Features and capabilities supported by this server
Protocol revision2025-11-25
| Capability | Details |
|---|---|
| tools | {
"listChanged": false
} |
| prompts | {
"listChanged": false
} |
| resources | {
"subscribe": false,
"listChanged": false
} |
| experimental | {} |
Tools
Functions exposed to the LLM to take actions
| Name | Description |
|---|---|
| search_trialsA | Find clinical trials studying a condition, newest registrations first. Use this to answer questions like "are there trials for X" or "what studies near Y are enrolling". Returns one entry per trial with its NCT number, title, recruitment status, conditions, a summary of where it runs, a short truncated description, and a link to the full record. Call get_trial with an NCT number from these results for eligibility criteria and full details. Args: condition: Disease or condition to search, e.g. "type 2 diabetes" or "non-small cell lung cancer". Prefer the medical name over a brand or colloquial term. status: RECRUITING for trials currently enrolling, COMPLETED for finished trials, ANY for both. Defaults to RECRUITING, which is what someone asking about joining a trial wants. location: Optional city, state, or country to narrow results, e.g. "Dallas" or "Germany". Omit to search worldwide. max_results: How many trials to return, 1 to 25. Defaults to 10. Returns: Matching trials, or an empty list with a note when nothing matched. |
| get_trialA | Read one clinical trial in full, including who is eligible to join. Use this after search_trials when a specific trial matters, or whenever a conversation names an NCT number. Returns title, status, phase, conditions, the eligibility criteria text with structured age range and sex, every study location, and the study description. Args: nct_id: The trial's registry identifier: the letters NCT followed by exactly 8 digits, e.g. "NCT04280705". Returns: The full trial record, or a not_found error if no trial has that number. |
| search_drug_recallsA | Look up FDA recall and enforcement reports for a drug. Use this to answer whether a drug has been recalled and why. Returns one entry per recall with its date, the affected product, the reason, the FDA hazard classification (Class I is most serious), the recall's current status, and the recalling firm. An empty result means no recall records matched, which is meaningfully different from a failure -- it is safe to report as "no recalls found". Args: drug_name: Generic or brand name, e.g. "metformin" or "Tylenol". Both are matched. Use normalize_drug_name first if the spelling is uncertain. max_results: How many recalls to return, 1 to 25. Defaults to 10. Returns: Matching recalls, most recent first, or an empty list with a note. |
| get_adverse_eventsA | Summarize which side effects are most often reported for a drug. Returns the total number of FDA adverse event reports mentioning the drug and the most frequently reported reactions with their counts, rather than individual case records. These are voluntary reports. A report does not establish that the drug caused the event, common drugs accumulate more reports simply by being common, and counts cannot be compared between drugs without knowing how many people take each. Present these as reported associations, never as side effects the drug is known to cause. Args: drug_name: Generic or brand name, e.g. "metformin". top_n: How many of the most-reported reactions to return, 1 to 25. Defaults to 10. Returns: Report total and ranked reactions, or zero reports with a note. |
| get_drug_labelA | Read the FDA-approved product label for a drug. Use this for what a drug is approved to treat and what its labeled warnings say. Returns brand and generic name, manufacturer, approved indications, and warnings; the long text fields are truncated and flagged when cut. Labels are per product, so a search can match a combination product or one manufacturer's version of a generic. Check the returned brand and generic names before relying on the text. Args: drug_name: Generic or brand name, e.g. "metformin" or "Glucophage". Returns: The label extract, or an empty result with a note when no label matched. |
| normalize_drug_nameA | Resolve a drug name to its RxNorm concept, correcting spelling if needed. Use this first when a drug name is misspelled, is a brand name, or comes from user text you are unsure about, then pass the canonical name to the other drug tools. On an exact match, returns matched: true with the RxCUI, canonical name, and term type (IN is an ingredient, BN a brand name). Otherwise returns matched: false with ranked candidates. Candidates are suggestions, not confirmed answers -- each names the endpoint it came from, and a spelling_suggestion is stronger evidence of intent than a merely similar approximate_term. Confirm with the user before treating one as the drug they meant. Args: name: The drug name as written, e.g. "metfromin", "Glucophage", or "metformin". Returns: The resolved concept, or candidates when there was no exact match. |
Prompts
Interactive templates invoked by user choice
| Name | Description |
|---|---|
No prompts | |
Resources
Contextual data attached and managed by the client
| Name | Description |
|---|---|
No resources | |
TDQS
Scored across 6 tools
Each tool targets a distinct data type and action: trials are split between search (list) and get (detail), while drug tools cleanly separate recalls, adverse-event reports, labels, and name normalization. The descriptions reinforce the boundaries and cross-reference each other, so an agent should rarely misselect.
All tools use an imperative verb + object pattern in snake_case: get_trial, search_trials, search_drug_recalls, get_adverse_events, get_drug_label, normalize_drug_name. The only variation is singular versus plural object forms, which aligns with whether a tool returns one record or many.
Six tools is a focused, appropriate size for a medical-information server that spans clinical trials and FDA drug data. No tool feels redundant, and the set is small enough to avoid agent decision overhead.
The trial workflow is complete: search results point to a full-record getter with eligibility criteria and locations. The drug side covers name resolution, recalls, adverse-event summaries, and labels, with no obvious dead ends for a read-only informational server.