DoseWise is a medication preflight agent for Alexa+, shipped as a self-hosted MCP server (Model Context Protocol spec 2025-11-25, Streamable HTTP) plus a simulated Alexa+ web experience that calls it live.

The moment it exists for. A doctor prescribes something new — or a well-meaning relative buys an over-the-counter painkiller — for someone already taking five medications. The question that matters is asked too rarely, and usually too late: "Wait — how does this new one sit with everything she already takes?" DoseWise makes Alexa+ the calm checker at exactly that moment: before you swallow.

What makes it different. DoseWise is deliberately not another reminder or adherence app — that space is well served (Medisafe, Hero, smart dispensers, Alexa's own pharmacy features). DoseWise does the two jobs those tools don't:

  1. The preflight. "Alexa, Mom's doctor prescribed ibuprofen — check it against her list." DoseWise fetches the candidate drug's official FDA label, live from openFDA, and searches its Drug Interactions and Warnings sections for every medication on her personal list. Every flag comes back with the label's own words, quoted, with the section named — evidence a family can read, print, and take to the pharmacist. If the label doesn't mention a drug on the list, DoseWise says exactly that — and says plainly that no mention is not a guarantee of safety, because labels are incomplete.
  2. The visit brief. Before a doctor or pharmacist appointment, DoseWise generates a one-page printable brief: the current medication list, recent symptoms the family logged by voice, any label flags found across the list, and generated questions to ask — turning a rushed seven-minute appointment into a prepared one.

What a family can do with it:

  1. Build the list — add_medication / list_medications / remove_medication keep a per-profile medication list (state the agent maintains and reasons over).
  2. Preflight a new medication — preflight_new_medication checks a candidate against the whole list using live FDA label text, quoting the relevant sections, and flagging boxed warnings. The check is bidirectional — it scans the new drug's label for list drugs and each list drug's label for the new one, because interaction warnings are asymmetric (warfarin's label, for example, warns about NSAIDs as a class).
  3. Understand a medicine — get_medication_facts returns plain-language label facts (what it's for, key warnings, how it's taken), each tied to its source section.
  4. Log symptoms by voice — log_symptom keeps a timestamped record ("dizzy spells, mostly mornings") that families otherwise forget to mention.
  5. Walk in prepared — create_visit_brief assembles list + symptoms + flags + questions into a printable brief.

Safety posture — stated plainly. DoseWise is advisory only. It never calls a combination "safe," never recommends doses, and never substitutes for a pharmacist or doctor. Its flags are label mentions to discuss, sourced and quoted so a professional can verify them in seconds. FDA label text is an incomplete interaction source — DoseWise says so in its README, in its tool outputs, and in every brief it generates. If the network is unavailable, it falls back to bundled FDA label excerpts for five common medications and labels that fallback in its output (data_source is always shown) — it never silently presents stale data as live.

How it works technically. TypeScript on the official MCP SDK v1 (@modelcontextprotocol/[email protected]): McpServer.registerTool, Zod raw-shape schemas, structured + text content, StreamableHTTPServerTransport in stateless mode with JSON responses, hosted by createMcpExpressApp. The openFDA client (4-second timeout, one-hour cache, label-quality scoring to pick the most useful label among search hits) feeds a mention-matching engine that maps brand/generic names (Coumadin→warfarin, Advil→ibuprofen) and extracts verbatim excerpts around each mention. The bundled simulator performs the genuine JSON-RPC handshake (initialize at protocol 2025-11-25 → notifications/initialized → tools/list → tools/call) from the browser with a live trace panel, so judges can watch every message. An optional Amazon Bedrock plain-language explanation of the visit brief can be enabled by environment variable; it is advisory only and never alters a flag.

Why Alexa+? The preflight question is asked standing in a pharmacy, or in a kitchen holding a pill bottle — by someone who cannot sit down and type into an interaction checker. It is asked out loud, about her list, and the answer has to carry its evidence with it. That is precisely an agentic voice moment.

Built during the hackathon window. The entire project — server, FDA client, matching engine, fixtures, simulator, tests and docs — was designed and built Oct 22–23, 2026, inside the submission window. It is a separate, substantially different project from the author's other entry (SafeWord Sentinel, a family scam-defense agent): different problem domain, different data source (live FDA labels), different core mechanism (label-mention preflight + generated brief).

Built With

Share this project:

Updates

Submission history