The Short Answer
You should not paste your genome into a chat. You should let your agent call something that reads genomes, and keep the file where you control it.
TL;DR: An AI agent is good at conversation and context and bad at parsing a 600,000-row genotype file. The fix is not a bigger model; it is a division of labour: the agent asks questions, a tool answers them from a real variant database, and the file never becomes part of the chat. Today your agent can already look up what a variant or a gene means through a free, cited endpoint. Reading your whole file through a tool is the part that needs consent, zero retention and a key — and that part is in private beta.
If you have a personal agent — Claude, ChatGPT, something you built yourself — and a raw data file from 23andMe, AncestryDNA or MyHeritage sitting in a folder, the temptation is obvious. Drop the file in. Ask "what should I know?". Wait for the answer.
This article is about why that is the wrong shape for the problem, what the right shape looks like, and what you can actually do this afternoon.
What You Want, and What the Chat Window Gives You
What you want is simple to state: tell me what is in my file that matters, tell me how sure you are, and tell me where that comes from.
What a chat window gives you when you paste genotype rows is an answer that reads exactly like that — and is assembled from the model's memory of what those rsIDs usually mean, on a genome build it guessed, on a strand it assumed. We took that apart in detail in Can ChatGPT analyse your raw DNA data?. The one-line version: reading a genome is a database join, not a reading-comprehension task, and a language model has no database to join against.
The problem is not the agent. It is asking the agent to do the parsing.
The Division of Labour
Think about how a good clinician works with a lab. The clinician does not run the assay. The clinician asks a question, the lab returns a number with a reference range and a method, and the clinician interprets that number in the context of the person in front of them.
An agent should sit exactly where the clinician sits in that picture — with the important caveat that it is not a clinician and should keep saying so. It holds the context: what you asked, what you already know, what you are worried about. It should not run the assay. It should call something that does.
In agent terms that "something" is a tool: an API the agent is allowed to call, described in a format the agent can read — an OpenAPI spec, or an MCP server. The tool does the unglamorous work that a chat cannot: detect which provider's format the file is in, normalise chromosome labels and no-calls, state the genome build instead of guessing it, and look every position up in ClinVar, PharmGKB and the rest. The agent gets back structured facts with sources, and then it does what it is good at: explaining them to you, in your words, in the order you care about.
Three consequences fall out of this shape:
The file never enters the conversation. It goes to the tool, the tool returns a summary, and the raw genotypes are not sitting in a chat transcript that gets logged, retained, or used for training under terms you did not read.
Every claim has a source. A tool built for this returns the ClinVar entry, the CPIC guideline, the population frequency. When your agent says "you carry the CYP2C19 *2 allele, which CPIC says matters for clopidogrel", you can click through and check. When a chat model says the same thing from memory, you cannot.
"I don't know" becomes possible. A consumer array cannot resolve CYP2D6 copy-number variants. A tool that knows this says so in the response. A model answering from memory does not know what it does not know about your file.
What You Can Do Today, for Free
The part of this that already works is the knowledge layer. DeepDNA publishes curated, cited records for a growing set of genes and variants as a public API — no key, no account, nothing stored. Your agent can call it right now if it has any way to fetch a URL.
Try it yourself first. This returns what the MTHFR C677T variant is, which gene it sits in, what the alleles mean, and where that comes from:
curl https://deepdna.ai/api/v1/variants/rs1801133
And this returns everything curated about a gene, including the section most tools skip — what a consumer array cannot tell you about it:
curl https://deepdna.ai/api/v1/genes/CYP2D6
Now the useful move. Open your raw data file in a text editor, find one row you are curious about — say the one starting rs1801133 — and ask your agent something like:
"My 23andMe file has rs1801133 with genotype CT. Fetch https://deepdna.ai/api/v1/variants/rs1801133 and the gene record it links to in gene.url. Explain what that genotype means for me, with the sources, and tell me what the response says about strand orientation and about what a consumer array can and cannot resolve for this gene."
You have just done three things that matter. You gave the agent one genotype, not the file. You pointed it at a source instead of its memory. And you asked it to repeat the caveats, which is the part a model most reliably drops.
Every response from that endpoint carries a disclaimer in the payload — educational information, not diagnosis — on purpose. An agent that forwards the answer forwards the caveat with it.
What Reading the Whole File Should Look Like
Looking up one variant is the demo. What you actually want is the whole file read, and that is the part that has to be built carefully, because now the tool is handling your genome.
This is the design DeepDNA is building the parsing endpoints around, and it is worth knowing what to expect from any tool that offers to do this:
Zero retention. The file is parsed in memory and discarded when the response is sent. No genome on disk, no genome in a database, nothing to breach later. If a tool cannot say this plainly, ask why.
The genome build is stated, not assumed. AncestryDNA reports on GRCh37. A tool that silently assumes GRCh38 puts every position at the wrong coordinate. The response should tell you which build it read.
Format is detected, not declared by you. 23andMe, AncestryDNA and MyHeritage exports differ in layout and no-call conventions. You should not have to know which one you have.
Consent is explicit and specific. Under GDPR your genetic data is special-category data. Processing it needs one of the narrow legal bases in Article 9; for a tool like this, in practice, your explicit consent for a specific purpose. A tool that is also going to "improve its models" with your file is asking for a different consent than the one you think you are giving.
The tool is a processor, not a collector. If you use an agent or an app that calls the tool, the tool works for that app under a data processing agreement. It does not build a relationship with your genome on the side.
DeepDNA's parsing endpoints, /dna/parse and /dna/annotate, are in private beta: specified in the OpenAPI so that people building agents can design against the contract now, but not yet deployed. They do not answer yet, with or without a key; the first keys will go, by hand, to the people who tell us what they are building. We would rather say that than ship a mock.
A Conversation That Works
Here is roughly what the good version looks like, once an agent has a parsing tool it is allowed to call. This is illustrative, not a transcript:
You: I have my AncestryDNA file. What should I know about how I handle medications?
Agent: I'll pass the file to the parsing tool rather than read it myself. It reports the file is AncestryDNA format, GRCh37, 668,904 usable positions. I'll ask for the pharmacogene annotations only. For CYP2C19 it reports the *2 marker (rs4244285) heterozygous and no *17 marker, consistent with *1/*2, one no-function allele, which CPIC classes as an intermediate metabolizer for clopidogrel, and it flags that this is a marker-based inference from an array, not a validated star-allele call. CPIC's clopidogrel guideline addresses that phenotype for people being treated after a coronary stent; that is something a prescriber would weigh, not something to change on your own. For CYP2D6 it reports that the array cannot resolve copy number, so it will not call a phenotype for you. Here are the CPIC and PharmGKB sources for each. None of this is a diagnosis or a dosing instruction; it is something to take to a clinician if it becomes relevant.
Notice what the agent did not do. It did not read the rows. It did not guess the build. It did not call a CYP2D6 phenotype it could not support. It did not tell you to change a medication. And your genome is not in the chat; a summary of a handful of pharmacogenes is.
Five Questions Before You Upload Anything
Whether it is DeepDNA or anyone else, ask these of any tool your agent wants to send your file to:
- What happens to the file after the response? The only good answer is "it is gone".
- Which genome build do you read, and do you tell me? If the answer is a shrug, walk away.
- Where is it processed, and under what law? Look for a stated location and a stated legal basis, not a flag emoji.
- Is anything trained on it? "No" should be unconditional.
- What does it refuse to say? A tool that never says "this array cannot resolve that" is confident, which is a different thing from careful.
What to Do Right Now
Download your raw data file if you have not, and keep your own copy — providers change hands and download links expire. Do not paste it into a chat. Pick one variant you are curious about and run the exercise above with your agent, pointing it at a source.
If you are building an agent or an app and want it to read whole files, request a beta key and tell us what you are building; a person reads every request. If you are not building anything, the most useful thing you can do is tell whoever builds the tools you use that this is what you want from them.
Frequently Asked Questions
Can my AI agent read my 23andMe raw data file directly?
It can open it, but it cannot analyse it reliably: it has no variant database, no genome build and no strand information, and it answers from memory formatted like fact. The reliable pattern is for the agent to call a parsing tool that has those things, and to explain the tool's cited result to you.
Is it safe to give my DNA file to an AI agent?
It depends entirely on where the file goes. Given to a chat window, it becomes part of a transcript with retention and training terms you probably have not read. Given to a tool designed for zero retention, parsed in memory and discarded, with the genome build stated and sources on every claim, the exposure is far smaller. Ask the five questions above of any tool.
What can I try today without uploading anything?
The DeepDNA knowledge endpoints — /api/v1/genes/{symbol} and /api/v1/variants/{rsid} — are free, need no key and store nothing. Look up one variant from your file and ask your agent to explain the cited response, including what a consumer array cannot resolve.
What is an MCP server and why does it matter here?
The Model Context Protocol is a standard way to describe tools so that an agent can discover and call them. A genomics MCP server lets any compatible agent parse and annotate a file through a tool instead of reading rows itself. DeepDNA's MCP server is not published yet; it ships with the private beta.
Will this tell me what medication to take?
No. It reports genotypes, guideline positions and sources so that a clinician has something concrete to look at. It does not prescribe, dose or diagnose, and neither should your agent.
The Real Answer
The question is not whether AI can read your DNA. It is whether the reading happens in a place you control, from sources you can check, with caveats that survive the journey to you. The agent is the interface. The tool is the instrument. Keep the file out of the conversation, and make both of them show their sources.
This article was created with AI assistance and reviewed by the DeepDNA editorial team.
DNA and bloodwork, as an API
DeepDNA is now an API for AI agents and health apps. The knowledge endpoints are live and free, no key. Parsing DNA files and lab reports, and crossing the two, is in private beta. Building something with genetic or lab data? Tell us what.
Read the API docs