OPEN SOURCE · LOCAL-FIRST · MCP SERVER
Your own biology, graded against the actual literature.
Biocite reads your labs and your genotype from a folder on your disk, then ranks primary research by how well it applies to you specifically.
POOR METABOLIZER · 13.0% of EAS vs 2.4% of EUR
A guideline written for the average patient is written for neither.
Worked example. The genotype in row one is illustrative — the phenotype call, the population frequencies and all five citations below it are real, and every PMID resolves. How it was graded.
Not a medical device. Does not diagnose, treat, or prescribe. Grades are computed from metadata by an automated rubric and are not a substitute for reading the paper.
§02 · THE PROBLEM
Web search returns the population mean.
Health isn't a set of facts. It's a set of conditional distributions, and the condition is you. Ask a general assistant a health question and it answers for an average person who doesn't exist.
The question
My Lp(a) is 134.8 nmol/L. Should I take niacin to lower it?
WHAT YOU GET TODAY
General assistant · web search on · knows nothing about you
Short version: probably not. Niacin lowers the number but hasn't been shown to lower risk, and it carries real harm.
That answer is correct and it's well written. It isn't a strawman, it's roughly the best a stateless assistant can do. It also cites eight sources, every one of them a society summary, a journal review, or a news post. Not a single primary trial report. Not a single PMID.
WHAT THE QUESTION DIDN'T CARRY
Nine variables that change the answer · none recoverable by search
- Primary or secondary prevention. A prior MI, stent, or stroke moves this from watchful optimization to everything, now.
- Age and sex. A 34-year-old and a 71-year-old get materially different advice from the same number.
- Ancestry. Lp(a) distributions differ by ancestry, so 134.8 sits at a different percentile depending on who's asking.
- Coronary calcium. CAC 0 versus CAC 300 flips the recommendation, and the answer can't even suggest the test because it doesn't know whether you've had one.
- Current apoB. The core recommendation is drive apoB down. Untargetable without knowing where apoB is.
- Current medications. The niacin harm signal came specifically from adding it on top of a statin.
- LPA genotype. Niacin's Lp(a) response appears to be apo(a) phenotype-dependent, so the drug may be inert for you before side effects are even discussed.
- Family history of premature ASCVD. The strongest modifier on what to do with a number in exactly this zone.
- One value, no trend. No way to tell a stable lifetime set point from a draw taken during inflammation.
None of that is a writing problem. It's a data problem, and it's the same data problem every time. The literature already contains the conditional answers. Nothing joins them to the person asking.
§03 · METHOD
The model doesn't decide. The code does.
Ask a language model to judge a paper's quality and it will confidently produce something. Ask it narrow factual questions and compute the judgment yourself in code, and the accuracy changes by a lot.
LLM-assisted RoB 2 evaluation, Claude 3.5 Sonnet · JMIR · PMC12238788
- RetrievePubMed and ClinicalTrials.gov, fanned out. Every MeSH term double-quoted, because an unquoted "hispanic or latino[mh]" returns 26× the correct count.
- GateRetracted papers, trial protocols, and editorials are excluded outright, not penalized. PubMed carries 33,460 records tagged Retracted Publication.
- Classify speciesRead off the MeSH XML, never asked for in the query. "animals[mh]" explodes to 29.1M records and silently swallows Humans; unexploded it's 7.95M.
- Score strengthDesign base × species multiplier, then log-scaled N, registry rigor, masking, allocation, and journal indexing. Arithmetic, in one versioned file.
- Score relevanceSeparately. Sex, age band, active conditions, ancestry. Every adjustment emits a sentence you can read, and those sentences are the product.
- Rank and dissentRanked on E^0.65 × R^0.35, grouped by tier. If any surviving study disagrees with the majority direction, one is returned regardless of rank.
- Compute the verdictSUPPORTED, MIXED, CONTRADICTED, HARM_SIGNAL, or INSUFFICIENT. Derived from tier counts in code. The model renders it; it never picks it.
The model is asked these
- How many participants were enrolled?
- Which direction did the primary result go: helped, no effect, harmed, or mixed?
- Was it statistically significant as stated?
- Was the primary outcome patient-oriented or a surrogate?
- What was the dose, unit, and duration?
- Quote the sentence containing the primary result, verbatim.
And never these
- Overall quality
- A risk-of-bias verdict
- "Is this good evidence"
- Any effect-size arithmetic
- Any pooling across studies
If the abstract is missing or under 400 characters, extraction is skipped entirely and confidence drops to LOW. There's nothing there to read, and a guess is worse than an abstention.
Species filtering, measured
Take one well-studied supplement. creatine AND humans[mh] returns 43,033 records. creatine AND animals[mh] NOT humans[mh] returns 21,672. About a third of the corpus for a supplement people have studied for thirty years is rodent and cell work. For obscure compounds the ratio is much worse, and a naive search hands it to you undifferentiated.
Counts run live against PubMed, 2026-07-28.
§05 · INGEST
One folder on your disk. That's the whole database.
Markdown with YAML front matter for anything a person wrote, CSV for anything a machine generated. You can git init it, diff it, and edit it in any text editor at 11pm without a UI.
- ProfileSex, birth year, ancestry as a list with fractions, height, weight. Admixture is the normal case, so it's never one label.SHIPPING
- ConditionsActive and resolved, with onset dates and optional MeSH IDs. Disease MeSH is indexed on nearly every indexed paper, which makes it the most reliable population match available.SHIPPING
- InterventionsDrugs, supplements, diet, training, sleep. One timeline, with start and stop dates, because splitting meds from supplements creates exactly the blind spot the tool should catch.SHIPPING
- Lab observationsLong-format CSV, append-only, LOINC as the canonical key. Corrections are new rows, never silent edits.SHIPPING
- Lab CSV importParsed into a staging queue with per-record match status and the original source text preserved. Nothing reaches the vault until you commit it.BETA
- Apple Health export.xmlDaily summaries only. One row per day. No paper reports 5-second heart-rate samples, so the vault doesn't store them.BETA
- Consumer DNA raw file23andMe and Ancestry TSV. Only the fixed CPIC Level-A rsID panel gets promoted into the vault; the 600k-row raw file is never loaded into context.BETA
- Lab report PDFText extraction plus a normalization pass, everything into the review queue. Wrong values silently accepted is the highest-stakes bug this product has.PLANNED
- MyChart C-CDAFree, structured, zero approval needed, and almost nobody uses it. Document Center, then Save CCDA.PLANNED
- WhoopOAuth, self-serve. The only wearable with a same-day path to real access.PLANNED
- Garmin · OuraFile import only, if at all.NOT PLANNED
The raw folder is gitignored by default. A 23andMe file and a Quest PDF are the two most re-identifying artifacts you own, and the vault should be safe to push to a private repo without thinking about it first.
§06 · DATA LAYER
Primary sources. No blog posts in the pipeline.
Roughly forty of them, each named, each with its license and the date it was last checked. If a claim in an answer can't be traced to one of these, it doesn't get made.
- PubMed · NCBI E-utilities37M records. Publication types, MeSH headings, abstracts, registry links.US Government work
- ClinicalTrials.gov API v2Enrollment, masking, allocation, status, and baseline demographics.US Government work
- Crossref RESTDOI resolution and update notices, including retractions.Open
- Retraction Watch databaseThe retraction corpus, downloadable in bulk.CC0
- Europe PMCFull-text search, annotations, and better trial-registry linkage than PubMed alone.Open
- OpenAlexJournal-level signals used for the trust term. Never impact factor.Data CC0 · free API key since early 2026
- CPICPharmacogenomic guidelines, allele definitions, diplotype-to-phenotype tables.CC0
- gnomAD v4Population allele frequencies, with sub-population detail.Open access · terms review outstanding
The holes, since you'd find them anyway
- No free, commercially safe drug-interaction corpus exists. RxNorm's interaction API was permanently retired on 2024-01-02 with no replacement, and DDInter 2.0 is CC BY-NC-SA. So Biocite ships no interaction checker.
- Cochrane and Epistemonikos have no open API. Their systematic reviews reach the pipeline only through PubMed indexing.
- There's no authoritative machine-readable source for sex- or ancestry-stratified lab reference ranges. CALIPER is closest and it's browser-only. So the vault stores whatever range the reporting lab printed, and says which lab it came from.
- There's no free authoritative predatory-journal blacklist. Cabells is paid and Beall's list has been defunct since 2017. The rubric inverts to whitelists instead: MEDLINE indexing, DOAJ presence, OpenAlex core.
§07 · COMPARISON
Where the existing options actually stop.
The literature layer is commoditized and mostly free. The personal-data layer exists and is literature-blind. Nobody has shipped the join, and the join is the only part worth building.
BiociteOpen source, self-hosted
Consumer lab platformFunction Health, Superpower, InsideTracker and similar
General assistant + a PDFPaste your results into a chat window
Literature MCP serverscite, BioMCP and the ~34 PubMed servers on PulseMCP
| Criterion | Biocite | Consumer lab platform | Assistant + a PDF | Literature MCP |
|---|---|---|---|---|
| Cites primary literature | Yes — Every claim carries a resolving PMID or DOI | No — Recommendations arrive without papers attached1 | Unreliable — 16% of GPT-4 biomedical references in one study were fabricated2 | Yes3 |
| Grades by study design | Yes — cebm-x-1.0, published in full | No1 | No4 | No — Relevance ranking and citation tallies, not appraisal3 |
| Separates animal from human evidence | Yes — Classified from MeSH XML, never from a query filter | Not applicable1 | No4 | No3 |
| Reads your own labs | Yes — From a folder on your disk | Yes — They draw the blood; the data lives on their servers1 | Partial — Only what you paste, only for that conversation4 | No3 |
| Reads your genotype | Planned — CPIC Level-A rsID panel, from your raw DNA file | No1 | Partial — Only what you paste4 | No3 |
| Flags retractions | Yes — Three independent checks, re-checked every 30 days | Not applicable1 | No4 | Partial3 |
| Ancestry-aware ranking | Yes — A bonus and a flag, never a filter | No1 | No4 | No3 |
| Says the evidence is insufficient | Yes — A computed verdict, and the default one | No — The product is a score and a plan1 | Sometimes4 | No — Returns ranked hits, not a verdict3 |
| Your health data leaves your machine | No — stdio only. There is no server to send it to | Yes — Hosted by definition1 | Yes4 | Not applicable — It never sees your data3 |
| You can read the scoring code | Yes — MIT | No1 | No4 | Partial — BioMCP is MIT; scite's server is hosted3 |
| Price | $0 | $365–499/yr — Reported range; vendor sources conflict1 | Subscription4 | $03 |
One measurement, since it's the clearest read on how empty this is. PulseMCP indexes 22,245 MCP servers. Searching it for pubmed returns 34. For fhir, 23andme, and lab results it returns zero, zero, and zero.
§08 · LOCAL-FIRST
There's no server, so there's nothing to breach.
Biocite runs as a process on your laptop and talks to your MCP client over stdio. It reads a folder on your disk. There's no account, no upload, no sync, and no hosted version.
Your machine
MCP client
Claude Code, Claude Desktop, Cursor, any
stdio · JSON-RPC
biocite
One Node process. No HTTP listener.
reads
~/health-vault
Markdown, CSV, a disposable SQLite cache. Yours.
HTTPS · search terms only · no vault content, ever
NCBI · ClinicalTrials.gov · Crossref
They see the terms and your IP, exactly as if you had typed them into PubMed.
- TRANSPORTstdio
- JSON-RPC over standard input and output, between two processes on your machine. No HTTP listener. No remote transport.
- TELEMETRYnone
- No analytics, no crash reporting, no usage pings. Not off by default. Not built.
- ACCOUNTnone
- Nothing to sign up for and nothing to sign in to. No email address is collected at any point.
- STORAGEyour disk
- Markdown, CSV, and a disposable SQLite cache, all under one directory you choose. Delete the folder and the product is gone.
What does leave, stated exactly
Search terms. When you ask a question, Biocite sends queries to NCBI, ClinicalTrials.gov, and Crossref, and those services see the terms and your IP the same way they would if you typed them into PubMed yourself. That's the only egress. No vault content is ever part of a request: not a lab value, not a genotype, not a condition, not a date.
Refusals run before any network call, so a question the server declines to answer never reaches NCBI at all.
There will not be a cloud version
This is a position, not a gap in the roadmap. A hosted vault means a breach surface, a BAA conversation, and asking you to believe a promise about what we don't look at. The architecture removes the question instead of answering it.
§09 · LIMITS
What it won't do, and why.
A tool that oversells here refutes itself. So here's the honest inventory, on the front page instead of buried in a footnote.
- It doesn't diagnoseNot a medical device, not a clinician, not a second opinion. It retrieves literature and grades it. Anything that reads like a diagnosis is a bug worth reporting.
- It won't give you a doseIt'll tell you the dose a study used, verbatim from the methods. It won't tell you what to take. Those are different sentences and the difference matters.
- It never pools effect sizesGPT-4 exact-match accuracy on extracting continuous outcomes is 0.487. An automated meta-analysis built on that would be confidently wrong often enough to hurt someone. So the tool extracts sample size and direction, and quotes result sentences verbatim. It never re-expresses a number.
- Sample size is often missingPubMed has no structured field for N. It comes from ClinicalTrials.gov, which covers roughly 25% of recent randomized trials, or from a narrow extraction pass. Unknown N is itself scored as a weakness rather than being quietly ignored.
- Ancestry is almost never reportedMeasured live: 5,109 of 270,721 human RCTs from 2015 to 2026 carry any population or ethnicity indexing. That's 1.9%. So the honest output most of the time isn't a match. It's the sentence "this trial did not report participant ancestry," and that sentence is the feature.
- No polygenic scoresPredictive accuracy in non-European ancestries runs at roughly half of European. Shipping a score that works worse for the people this product is built to serve would be indefensible.
- No MTHFRACMG recommends against testing it. And the ancestry angle everyone repeats doesn't survive the data: C677T sits at 35.5% in East Asians and 33.7% in non-Finnish Europeans. It's common in everyone.
- No drug-interaction checkerThere's no free, unrestricted, commercially safe interaction dataset. RxNorm's was retired on 2024-01-02 and nothing replaced it. Shipping a half-sourced interaction checker inside a health product is the worst possible corner to cut, so this one stays empty until a licensed source is secured.
- It's CEBM-inspired, not GRADEGRADE's downgrade domains aren't derivable from metadata. Emitting a GRADE label would be borrowing credibility we didn't earn. And no rubric is a substitute for reading the paper, which is why every PMID is a link.
- Your own data is the weakest evidence there isThe n=1 readout is retrospective, uncontrolled, unblinded, single-subject analysis of data collected for other reasons. It refuses to run below three observations on either side. It names your confounds mechanically, tells you when a change is smaller than the measurement noise, and never says caused.
It stops entirely on these
Emergency symptoms, self-harm, whether to stop a prescribed medication, pediatric dosing, pregnancy and lactation drug safety, controlled-substance dosing, imaging and pathology interpretation, and personalizing against someone else's body. These are refusals in code, evaluated before any search runs.
Disclaimer
Biocite is a literature-retrieval and evidence-grading tool. It is not a medical device, it does not diagnose, treat, or prescribe, and it is not a substitute for a clinician who can examine you. Evidence grades are computed from publication metadata by an automated rubric (cebm-x-1.0) — they are CEBM-inspired, not GRADE, and not a substitute for reading the paper. Personal-relevance scores describe how closely a study population resembles the profile you entered; they are not a prediction about you. Do not start, stop, or change a prescribed medication based on this output.
Attached verbatim to every tool output and to biocite://policy/disclaimer
The hero graded 5 of 147 screened records and none of them earned a WEAK or ANIMAL ONLY badge. Both are demonstrated on the method page rather than padded into the stack.