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.

CPIC CYP2C19 frequency table · CC0 · retrieved 2026-07-29
ancestry_23andme_v5.txtCYP2C19 *2/*17EASExampleLocal

INTERMEDIATE METABOLIZER · 46.0% of EAS vs 26.2% of EUR

NMIMPM

CPIC frequency table · CC0 · Hardy-Weinberg estimate, not observed counts

TierFindingEffectnPMID
  • StrongEast Asian LOF carriers: 2× major adverse cardiac events after stentingOR 1.99 (1.64–2.42)EAS15,05629257922
  • StrongCarrier risk is 1.9× in Asians but 1.2× in whites — same drug, same procedureRR 1.91 (1.61–2.27)EAS36,07625258374
  • ModerateA single reduced-function allele was enough to raise events and stent thrombosisHR 1.55 (1.11–2.17)9,68520978260
  • ModerateRandomised in Chinese carriers: ticagrelor beat clopidogrel, 6.0% vs 7.6% strokeHR 0.77 (0.64–0.94)EAS6,41234708996
  • ConflictingIn the largest review, the association vanished once small-study bias was removedRR 0.97 (0.86–1.09)42,01622203539

Shared log axis 0.63.0 · dashed line = no difference · right = worse on clopidogrel

Published the other way round; plotted as the exact reciprocal so all five rows share one direction. The caption quotes the published value.

VerdictMODERATEreduced antiplatelet response · CPIC Level A · consider alternative · 3 of 5 studies East Asian

graded · 5 of 147 records met inclusion

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

  1. Primary or secondary prevention. A prior MI, stent, or stroke moves this from watchful optimization to everything, now.
  2. Age and sex. A 34-year-old and a 71-year-old get materially different advice from the same number.
  3. Ancestry. Lp(a) distributions differ by ancestry, so 134.8 sits at a different percentile depending on who's asking.
  4. 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.
  5. Current apoB. The core recommendation is drive apoB down. Untargetable without knowing where apoB is.
  6. Current medications. The niacin harm signal came specifically from adding it on top of a statin.
  7. 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.
  8. Family history of premature ASCVD. The strongest modifier on what to do with a number in exactly this zone.
  9. 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.


§03Signaling questions in, arithmetic out. The model never returns a verdict.PMC12238788Rubric cebm-x-1.0

§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.

55% 95%Risk-of-bias Domain 2 accuracy, when the algorithm derived the judgment instead of the model. Overall agreement went 70% 90% the same way.

LLM-assisted RoB 2 evaluation, Claude 3.5 Sonnet · JMIR · PMC12238788

StageWhat happens
  • 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.


§05Markdown and CSV in one directory. There is no database to learn.Status per row is the build plan, not a release

§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.

SourceHow it landsStatus
  • 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.


§06Every source named, with its license and the day it was last checked.The full bill of materials

§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.

SourceWhat it providesLicense
  • 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

Biocite compared with consumer lab platforms, a general assistant with a pasted PDF, and a literature MCP server, across eleven criteria.
CriterionBiociteConsumer lab platformAssistant + a PDFLiterature MCP
Cites primary literatureYes — Every claim carries a resolving PMID or DOINo — Recommendations arrive without papers attached1Unreliable — 16% of GPT-4 biomedical references in one study were fabricated2Yes3
Grades by study designYes — cebm-x-1.0, published in fullNo1No4No — Relevance ranking and citation tallies, not appraisal3
Separates animal from human evidenceYes — Classified from MeSH XML, never from a query filterNot applicable1No4No3
Reads your own labsYes — From a folder on your diskYes — They draw the blood; the data lives on their servers1Partial — Only what you paste, only for that conversation4No3
Reads your genotypePlanned — CPIC Level-A rsID panel, from your raw DNA fileNo1Partial — Only what you paste4No3
Flags retractionsYes — Three independent checks, re-checked every 30 daysNot applicable1No4Partial3
Ancestry-aware rankingYes — A bonus and a flag, never a filterNo1No4No3
Says the evidence is insufficientYes — A computed verdict, and the default oneNo — The product is a score and a plan1Sometimes4No — Returns ranked hits, not a verdict3
Your health data leaves your machineNo — stdio only. There is no server to send it toYes — Hosted by definition1Yes4Not applicable — It never sees your data3
You can read the scoring codeYes — MITNo1No4Partial — BioMCP is MIT; scite's server is hosted3
Price$0$365–499/yr — Reported range; vendor sources conflict1Subscription4$03
  1. 1Vendor product and pricing pages for Function Health, Superpower, and InsideTracker, reviewed 2026-07-28. Pricing sources conflict, so the range is printed rather than a single figure. Verified 2026-07-28.
  2. 2Reported fabrication rate for GPT-4-generated biomedical references in a published evaluation; recorded in research/05-evidence-grading.md §citation risk. Verified 2026-07-28.
  3. 3scite's MCP endpoint tested live: POST https://api.scite.ai/mcp returned HTTP 200, 25 tools, no credentials, over a corpus of 218,480,986 papers. BioMCP is MIT-licensed with roughly 40 sources. PulseMCP counts queried directly. Verified 2026-07-28.
  4. 4The stateless-chat baseline is the control answer recorded in research/examples/lpa-niacin-generic.md: a general assistant with web search, asked one lab value, citing eight sources of which none is a primary trial report. Verified 2026-07-28.

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.


§08Four nodes. One arrow leaves the machine, and it carries search terms.What we could not verify

§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

01

MCP client

Claude Code, Claude Desktop, Cursor, any

stdio · JSON-RPC

02

biocite

One Node process. No HTTP listener.

reads

03

~/health-vault

Markdown, CSV, a disposable SQLite cache. Yours.

HTTPS · search terms only · no vault content, ever

04

NCBI · ClinicalTrials.gov · Crossref

They see the terms and your IP, exactly as if you had typed them into PubMed.

Four nodes. The dashed boundary is your machine. One arrow crosses it, and what it carries is the same thing a browser address bar would carry.
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.


§09Ten of them, on the front page instead of in a footnote.Refusals run before any network call

§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.

  1. 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.
  2. 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.
  3. 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.
  4. 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.
  5. 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.
  6. 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.
  7. 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.
  8. 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.
  9. 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.
  10. 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

StrengthStrongModerateWeakOff axisAnimal onlyConflictingRubric

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.

§12 · GET IT

Point it at your own data.

One command. No account, no upload, no key required.

Node at least 20 · MIT · no telemetry
$ claude mcp add biocite -e BIOCITE_VAULT="$HOME/health-vault" -- npx -y biocite-mcp