Inspiration
People leave doctor visits with a plan they cannot remember by the time they get home. Patients forget 40 to 80 percent of what their clinician tells them, and almost half of what they do remember is wrong (Kessels 2003). Patient education guidance has been saying the same thing for years: write at sixth-grade level, lead with the action, ground every claim, and respect the language the person actually speaks.
Featherless takes that last mile seriously. The clinician has already made a plan. The FHIR context is sitting in Prompt Opinion. The job is to turn that context into something the patient can use and into the closure work the care team still owes, before the next visit overwrites the memory.
What it does
For the patient currently loaded in Prompt Opinion, Featherless does six things in one consultation:
- Reads the live FHIR visit context per request.
- Packs the relevant encounter, problems, medications, vitals, and labs into a typed clinical payload.
- Generates a grade-six after-visit packet in English or Spanish through Cloudflare Workers AI.
- Reports the readability score and grounds every clinical claim with a citation. Unsupported claims are cut.
- Prepares draft FHIR R4 closure resources for the care team: a
Task, aCommunicationRequest, and aDocumentReference. - Returns the full MCP and A2A tool trace, so a clinician or auditor can see exactly which tools were called and which fields were used.
Bonus: For the dashboard prompt, Featherless also returns a short-lived hosted URL alongside the standard MCP-UI ui:// resource, so the dashboard opens directly from the Prompt Opinion response.
How To Test
Open the primary Prompt Opinion Marketplace listing, start the Featherless Visit Assistant, use "featherless" as consult agent, and choose a synthetic patient.
Try it with these prompts:
Create an after-visit summary for this patient in plain English. Include what changed today, medication instructions, warning signs, follow-up steps, and where the information came from.
Can you make the same after-visit summary for this patient in Spanish? Keep it simple, and include medicine instructions, warning signs, follow-up steps, and sources.
Can you show me a visual dashboard for this patient with charts and safety highlights? If the dashboard opens as a link, put that link first, then briefly explain what I should look at.
How we built it
Featherless is two Cloudflare Workers and one Prompt Opinion BYO agent.
The MCP Worker holds the clinical tools. The A2A orchestrator Worker fronts the BYO agent inside Prompt Opinion. The orchestrator does not reach the MCP Worker over the public internet; it uses a Cloudflare service binding, so the call stays Worker to Worker inside Cloudflare.
Prompt Opinion forwards the FHIR context as A2A message metadata. The orchestrator maps that metadata onto SHARP-style request headers (X-FHIR-Server-URL, X-FHIR-Access-Token, X-Patient-ID) on every MCP tool call. The access token is scoped to the request and never written to a log, a cache, a database, or the response.
Text generation runs entirely on Cloudflare Workers AI with @cf/openai/gpt-oss-120b, open-source LLM by OpenAI. The patient packet is bounded by a structured prompt and a citation-or-cut policy: a clinical claim with no source attached is dropped before the packet is returned. Readability is measured with Flesch-Kincaid for English and INFLESZ for Spanish, then reported next to the text. Closure artifacts are validated against FHIR R4 shapes with Zod.
The MCP server returns the standard MCP-UI ui:// resource so any MCP-UI compatible host can render it natively. Prompt Opinion does not currently render arbitrary MCP-UI iframes in the chat surface, so the same tool also returns a short-lived /render/<token> URL pointing at a route on the Worker. That route serves the same dashboard HTML with Chart.js, which means the dashboard opens directly from the chat response. It's our workaround to serve an extra bonus.
Challenges we ran into
The hard parts were not the models or the protocols. They were the boundaries between them.
Mapping A2A FHIR metadata into MCP SHARP headers without ever holding the access token took several rewrites. Avoiding the trap where the orchestrator silently falls back to localhost or to a leaked external URL took another, and we eventually added a deploy-time gate that fails fast if a public request points at a loopback target. Keeping the packet readable at sixth-grade level in two languages while keeping every clinical claim grounded forced us to drop a lot of confident-sounding text and accept gaps where the FHIR record was thin. The MCP-UI piece was a fork in the road that took a day of design work: we kept the standard ui:// resource for compliant hosts and added the hosted render URL for the demo, and we decided to be explicit about which one Prompt Opinion opens.
Accomplishments we are proud of
- Three connected Prompt Opinion Marketplace surfaces, wired end to end: a BYO agent, an external A2A agent, and a reusable MCP server.
- A complete chat to A2A to MCP to FHIR loop running on Cloudflare Workers without an external LLM provider key.
- A grade-six after-visit packet in English and Spanish with citation-or-cut grounding enforced as policy.
- Draft FHIR R4 closure resources for the care team, with no auto-send and write-back disabled by default (human-in-the-loop).
- A live MCP-UI dashboard with Chart.js visualizations that actually opens from the Prompt Opinion chat.
What we learned
A useful healthcare agent is a small set of stable surfaces with clear inputs and outputs, and the real work is in the seams between them. Prompt Opinion's FHIR context plus MCP and A2A is the first stack we have used where those seams are visible, which is what makes the trace meaningful to a clinician.
We also learned that judges and clinicians want to see the trace, not the magic. The "Show Tool Calls" toggle did more for our credibility in five seconds than any architecture slide could.
What's next for Featherless
- More patient languages, prioritized by clinic volume.
- A clinician review and edit step before the packet is delivered.
- Closure artifacts that schedule and track real follow-up, instead of staying as draft tasks.
- Longitudinal MCP-UI dashboards for adherence and red flags/gaps over time.
Built With
- a2a
- chart.js
- cloudflare-workers
- cloudflare-workers-ai
- fhir
- mcp
- mcp-ui
- prompt-opinion
- typescript
- zod


Log in or sign up for Devpost to join the conversation.