MedlinePlus API: Explain a lab test
Explains a MedlinePlus medical test: what it measures, why it is ordered, how it is done, preparation, risks, and what the results mean.
Unofficial. Not affiliated with or endorsed by MedlinePlus.
Inputs
Values from the run on Oct 23, 2026, shown under Output.
- Test, required
test Test name on a lab form or report, for example A1C, CBC, or TSH.
A1C
Input as JSON
{ "test": "A1C"}Output
{ "risks": "There is very little risk to having a blood test. You may have slight pain or bruising at the spot where the needle was put in, but most symptoms go away quickly.", "used_for": "Your blood glucose level changes all the time. If you're checking it at home, you are measuring what your blood glucose level is at that time. An A1C test gives you an average level of your blood glucose level over the past two to three months.\nAn A1C test may be used to screen for or diagnose:\n• Ty…", "page_link": "https://medlineplus.gov/lab-tests/hemoglobin-a1c-hba1c-test/" , "test_name": "Hemoglobin A1C (HbA1c) Test", "what_it_is": "A hemoglobin A1C (HbA1C) test is a blood test that shows your average level of blood glucose , also called blood sugar, over the past two to three months.\nGlucose is a type of sugar in your blood that comes from the foods you eat. Your cells use glucose for energy. A hormone called insulin helps glu…", "other_names": [ "HbA1C", "A1C", "glycohemoglobin" ], "what_happens": "A health care professional will take a blood sample from a vein in your arm, using a small needle. After the needle is inserted, a small amount of blood will be collected into a test tube or vial. You may feel a little sting when the needle goes in or out. This usually takes less than five minutes.", "how_to_prepare": "Certain medicines such as opioids and some HIV medicines may affect your results, so tell your provider about everything you take. But don't stop taking any medicines unless your provider tells you to. Also, let your health care provider know if you are pregnant, since this may affect your results.", "what_results_mean": "A1C results tell you what percentage of your hemoglobin is coated with glucose. The ranges are just a guide to what is normal. What's normal for you depends on your health, age, and other factors. Ask your provider what A1C percentage is healthy for you.\nTo diagnose diabetes or prediabetes, the perc…", "why_you_might_need_it": "The Centers for Disease Control (CDC) recommends A1C testing for diabetes and prediabetes if:\n• You are over age 45. If your results are normal, your provider will tell you how often you should be tested based on your age and risk factors. If your results show you have prediabetes, you will usually …"}Code
curl https://api.fous.com/v1/runs \ -H "Authorization: Bearer $FOUS_API_KEY" \ -H "Content-Type: application/json" \ -d '{"method":"medlineplus.gov/explain_lab_test","input":{"test":"A1C"}}' # Save as fous.py, then run: python3 fous.pyimport json, os, timefrom urllib.error import HTTPErrorfrom urllib.request import Request, urlopenAPI = "https://api.fous.com/v1/runs" KEY = os.environ["FOUS_API_KEY"]HEADERS = { "Authorization": f"Bearer {KEY}", "Content-Type": "application/json" ,}def call(url, body=None): data = json.dumps(body).encode() if body else None request = Request(url, data, HEADERS) try: with urlopen(request, timeout=120) as r: return r.status, json.load(r) except HTTPError as error: message = json.load(error)["error"]["message"] raise RuntimeError(message) from errorstatus, run = call(API, { "method": "medlineplus.gov/explain_lab_test" , "input": { "test": "A1C" }})# 202: still going after 30 s. Ask again until it ends.while status == 202: time.sleep(2) status, run = call(f"{API}/{run['id']}")print(json.dumps(run["data"], indent=2))// Save as fous.mjs, then run: node fous.mjsconst api = "https://api.fous.com/v1/runs" ;const headers = { Authorization: `Bearer ${process.env.FOUS_API_KEY}`, "Content-Type": "application/json" ,};let response = await fetch(api, { method: "POST", headers, body: JSON.stringify({ "method": "medlineplus.gov/explain_lab_test" , "input": { "test": "A1C" } }), signal: AbortSignal.timeout(120_000),});let run = await response.json();// 202: still going after 30 s. Ask again until it ends.while (response.status === 202) { await new Promise((done) => setTimeout(done, 2_000)); response = await fetch(`${api}/${run.id}`, { headers }); run = await response.json();}if (!response.ok) throw new Error(run.error.message);console.log(run.data);# Connect your agent to Fous once, over MCP (Streamable HTTP):# https://api.fous.com/mcp# Set FOUS_API_KEY first: create a key at https://app.fous.com/keys.# Claude Codeclaude mcp add \ --scope user \ --transport http fous https://api.fous.com/mcp \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Codexcodex mcp add fous \ --url https://api.fous.com/mcp \ --bearer-token-env-var FOUS_API_KEY# Cursor, VS Code, Windsurf, Cline and morenpx -y add-mcp https://api.fous.com/mcp -g -n fous \ --header "Authorization: Bearer ${FOUS_API_KEY:?Set FOUS_API_KEY to your Fous API key}"# Then ask your agent:# "Use Fous to run medlineplus.gov/explain_lab_test# with {"test":"A1C"}"Over HTTP, the answer’s data holds the output. A run still going after 30 seconds answers 202 with its id: ask GET /v1/runs/{id} until it ends.
Schema
Input schema
{ "type": "object", "required": [ "test" ], "properties": { "test": { "type": "string", "minLength": 1, "description": "Test name on a lab form or report, for example A1C, CBC, or TSH." } }}Output schema
{ "type": "object", "required": [ "test_name", "other_names", "page_link" ], "properties": { "risks": { "type": [ "string", "null" ] }, "used_for": { "type": [ "string", "null" ] }, "page_link": { "type": "string" }, "test_name": { "type": "string" }, "what_it_is": { "type": [ "string", "null" ] }, "other_names": { "type": "array", "items": { "type": "string" } }, "what_happens": { "type": [ "string", "null" ] }, "how_to_prepare": { "type": [ "string", "null" ] }, "what_results_mean": { "type": [ "string", "null" ] }, "why_you_might_need_it": { "type": [ "string", "null" ] } }}- Price
- 1 credit per completed run (1¢ with pay as you go); failed runs are free.
- Method
medlineplus.gov/explain_lab_test- Returns
- test name, other names, explanation sections, page link
Use it from your agent
Give your agent this line. It reads SKILL.md, gets a Fous API key and connects the Fous MCP server. Its run then takes the method medlineplus.gov/explain_lab_test with the inputs above.
Ask your agent
- What does a TSH blood test measure and why would my doctor order it?
- Can you explain the CBC test, what it checks, and how to prepare for it?
- I got an A1C result on my lab report, what does that test tell me?
- Tell me what a lipid panel involves, including fasting requirements and what the numbers mean.
- What are the risks and procedure steps for a ferritin test listed on my MedlinePlus results?
See more
All MedlinePlus methodsLooks up a MedlinePlus health topic for a condition or symptom and returns its overview, related topics, and encyclopedia sections when a matching article is linked.
medlineplus.gov/get_health_topicFinds WebMD's main guide for a condition through a Bing search. Returns its overview and its symptoms, causes, diagnosis, treatment and when-to-call-a-doctor sections.
webmd.com/get_conditionExplains an ICD-10-CM diagnosis code with its official name, category, chapter, and whether it is billable, using the NLM Clinical Tables diagnosis table.
clinicaltables.nlm.nih.gov/explain_diagnosis_codeFinds PubMed medical and life-science articles by topic, with publication details and free full-text links when PubMed confirms them.
pubmed.ncbi.nlm.nih.gov/search_articlesLooks up a medicine by brand or generic name on Drugs.com and returns a plain-language overview: class, uses, availability, schedule, dosage forms, side effects, and pregnancy and breastfeeding notes.
drugs.com/get_drugFinds a Mayo Clinic disease or condition page by name and returns its overview, symptoms, causes, when to see a doctor, risk factors, complications and prevention.
mayoclinic.org/get_conditionGets NHS guidance for a named health condition, including symptoms, when to seek help, causes, treatment and prevention. Sections not shown on NHS pages are null; for conditions with several guidance pages, the review date is the latest among the pages used.
nhs.uk/get_conditionLooks up a medicine in the NHS medicines A to Z and returns its guidance: uses, key facts, who can take it, how to take it, side effects, pregnancy and interactions. Sections absent from NHS guidance are null; a plain name with separate adult and child pages selects the adult page.
nhs.uk/get_medicine